oam-dev / spec

Open Application Model (OAM).
https://oam.dev
Other
3.03k stars 246 forks source link

Proposal/Question - Support for CI workflows #479

Open rpau opened 1 year ago

rpau commented 1 year ago

The readme, literally says:

Focused on application rather than container or orchestrator, Open Application Model brings modular, extensible, and portable design for defining application deployment with higher level API.

And this tweet has been very illustrative of what OAM provides: https://twitter.com/wonderflow1/status/1564888057647509504/photo/1

But I wonder if there is a way to expand the model to CI (e.g via Tekton or Argo Workflows) - which also requires infrastructure (e.g where to upload the containers), and therefore there are workflows and not just the CD parts. If I am right, I would appreciate to understand how to start.

I am certainly still a bit lost, so be patient with me :)

wonderflow commented 1 year ago

We're also trying to expand this model to CI part, but we don't have best practices now. Recently we have launched a project called workflow , it uses the same way to provide application-centric abstract and shares the same core engine with KubeVela.

The workflow can be a common workflow including CI/CD and it can leverages Tekton or Argo as runtime Implementation.

blaggacao commented 1 year ago

In my personal opinion BPMN2.0 would be a novel (for techies) executable representation model but which suits extremely well for business people.

Now, CI leans more into the tech role, while CD leans more into the business role, I still thought to spread in the reference, here:

A good implementation (backed by Camunda) is https://zeebe.io.


Another interesting (food-for-thought) realization is when "build" parts in CI are disintermediated by a declarative closure build system a la Bazel or Nix/Guix.

This interestingly already reduces CI to a bare minimum skeleton. And it solves a big chunk of the same problem space.

Through standardization, one can even disintermediate the need to declare CI intructions at all, where the CI magically knows where to find stuff.

(https://github.com/divnix/std attempts to do that in the future)

EDIT: since we're gophers here, this is an example of such a complete build + test instructions for the CLI: https://github.com/divnix/std/blob/main/cells/std/cli.nix. And this is an example that produces a minimal OCI container: https://github.com/divnix/std/blob/dev-oci/cells/_automation/containers.nix

rpau commented 1 year ago

Today, I have found an interesting proposal based on Spinnaker that overlaps with OAM https://github.com/spinnaker/keel/blob/master/docs/preview-environments.md#proposed-changes-to-the-delivery-config

rpau commented 1 year ago

@wonderflow It is great that workflows can run on Tekton or Ago. I haven't found any documentation about the DSL tough.