Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: Tekton Workflows #464

Open
dibyom opened this issue Jun 21, 2021 · 12 comments
Open

Proposal: Tekton Workflows #464

dibyom opened this issue Jun 21, 2021 · 12 comments
Labels
lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness.

Comments

@dibyom
Copy link
Member

dibyom commented Jun 21, 2021

This is a proposal for an experimental higher level resource that would group the lower level Tekton primitives into a single entity. Conceptually, this would be similar to workflow in GitHub Actions and Argo Workflows, and Pipeline in Jenkins, CircleCI, and Gitlab.

The problem the project will solve

The main goal is to simplify the CI/CD configuration for end users. Tekton today has different un-opinionated primitives. While this is very flexible, it adds additional burden on end users looking for simpler CI/CD use cases. Platform developers tend to abstract away this complexity by adding abstraction layers that only expose basic inputs to the app developers.

Within Tekton itself, there have been a few experiments in this area. The Generators project combines trigger and pipeline definitions into a higher level opinionated syntax that is aware of external systems such as GitHub. The Pipelines as Code project uses PipelineRuns with annotations to describe Triggers. Similarly, Tekton Integrations proposed adding annotations for notifications and status updates to external systems. There was also a proposal for a concept of "Project" that will combine Triggers and Pipelines into a single view.

Similarly, many other CI/CD systems have an abstraction where primitives such as Triggers, and Pipelines are combined into one resource e.g. workflow in GitHub Actions and Argo Workflows, and Pipeline in Jenkins, CircleCI, and Gitlab.

Who Will Own It

@dibyom
@bobcatfish

@vdemeester
Copy link
Member

vdemeester commented Jun 21, 2021

@dibyom @bobcatfish few questions

  • Would this be an opiniated setup/use of the different TektonCD components ?
  • Should we aim to be the solution we use for dogfooding or not ? (cc @afrittoli)
  • Can this be started as an experimental project ? If not (or even if), should we have a TEP for it ? If we go experimental, I wouldn't require it, if we want to make it a project on its own, I would require it I think.
  • How does it relates to "Pipelines as Code", or others experimentation in that sense ? Also, would it be a full "distribution" (aka you install it, it installs everything) or a component that sits on top of the others and let the "installation/configuration" part up to the user (or something else, like the operator 🙃 )

@nikhil-thomas
Copy link
Member

nikhil-thomas commented Jun 22, 2021

/unassign
and subscribe instead 😌

@dibyom
Copy link
Member Author

dibyom commented Jul 1, 2021

Would this be an opiniated setup/use of the different TektonCD components ?

Yes, some similarities with https://github.com/openshift-pipelines/pipelines-as-code

Should we aim to be the solution we use for dogfooding or not ? (cc @afrittoli)

Absolutely, dogfooding would be a great use case!

Can this be started as an experimental project ? If not (or even if), should we have a TEP for it ? If we go experimental, I wouldn't require it, if we want to make it a project on its own, I would require it I think.

Yes! this is for an experimental project but I do plan on opening up a TEP so that we can discuss the actual API in more detail

How does it relates to "Pipelines as Code", or others experimentation in that sense ? Also, would it be a full "distribution" (aka you install it, it installs everything) or a component that sits on top of the others and let the "installation/configuration" part up to the user (or something else, like the operator 🙃 )

Good question -- pipelines as code also groups triggers + other options together (using annotations). So in that sense it is similar. The concept of repo CRD is also very interesting -- would be interesting to explore a generic eventSource type thing perhaps for Workflows. I think this would be less of a distribution and more of a component (something like the operator could do the install/configuration).

I think the pipelines as code WG that @chmouel proposed would be a good forum to explore these questions.

@dibyom
Copy link
Member Author

dibyom commented Jul 15, 2021

According to the Proposing Projects process, we need two governing board members to approve before we can create an experimental project.

/cc @vdemeester @afrittoli @abayer @bobcatfish

@bobcatfish
Copy link
Contributor

👍 from me!

@vdemeester
Copy link
Member

👍🏼

@dibyom
Copy link
Member Author

dibyom commented Jul 15, 2021

Awesome! I'll go ahead with setting up the experimental folder!

@tekton-robot
Copy link
Contributor

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale with a justification.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close with a justification.
If this issue should be exempted, mark the issue as frozen with /lifecycle frozen with a justification.

/lifecycle stale

Send feedback to tektoncd/plumbing.

@tekton-robot tekton-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 15, 2021
@afrittoli
Copy link
Member

/remove-lifecycle stale

@tekton-robot tekton-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 22, 2021
@afrittoli
Copy link
Member

/lifecycle frozen This is an ongoing experimental project

@vdemeester
Copy link
Member

/lifecycle frozen

@dibyom
Copy link
Member Author

dibyom commented Oct 19, 2022

Status Update - we started a Working Group leading to a proposed design (join mailing list for access) and an ongoing experimental implementation in https://github.com/tektoncd/experimental/tree/main/workflows

Join the #workflows channel on our Slack if you are interested in Workflows!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness.
Projects
Status: Todo
Status: Todo
Development

No branches or pull requests

6 participants