-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Split / Join in Pipelines #3929
Comments
/cc @pritidesai @jerop |
@vdemeester yes, it'll be solved by TEP-0059; we're discussing the proposal and alternatives in tektoncd/community#407 @wkulhanek thanks for the detailed description of the scenario - if possible, please share real-world use case or example of how you need to use this feature so that we can consider it in TEP-0059 |
TEP-0059 does not help with mutually exclusive conditions but it helps (a bit) with joining back. The split can be achieved today using
After TEP-0059 it will be possible for both (B) and (C) to be marked with "Task" scope, and thus for a following Task D to run. This is true only as long as Task D is marked as I think a complete solution for this use case should allow to:
We could event consider a N split and join, where the condition may generate N different results - a "switch" kind of construct. |
@jerop The simple case that I fell over was that I built a generic pipeline that builds and deploys a Java based application. But the actual deployment was happening either via a "Deployment" or via a "Knative Service" based on a boolean flag on the PipelineRun. So all my steps in the pipeline are the same (git checkout, maven build, image build, tag, ...). The only thing that's different is how to update the "application" in my namespace. |
@afrittoli This is exactly what I had. Except I would suggest that just using the "result" of Task A would be too narrow. In my case the condition is a boolean input parameter on the PipelineRun itself rather than being generated by Task A. |
Issues go stale after 90d of inactivity. /lifecycle stale Send feedback to tektoncd/plumbing. |
/remove-lifecycle stale I'm kind of surprised this isn't getting any attention. Seems like this is the most basic capability that's missing... |
Hi @wkulhanek the simple use case you have provided in the description is now supported with branch scoped We have introduced a new feature flag
Hope it helps, let me know if there is anything missing 🙏 |
Stale issues rot after 30d of inactivity. /lifecycle rotten Send feedback to tektoncd/plumbing. |
Rotten issues close after 30d of inactivity. /close Send feedback to tektoncd/plumbing. |
@tekton-robot: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Feature request
It appears there is currently no way to split / join a Pipeline. This is a basic feature that is missing - and will prevent broad adoption of Tekton Pipelines. Almost every Pipeline that I build (besides simple demo ones) requires this capability.
Note that this is different from parallel execution of tasks where all tasks will run.
Use case
The use case is actually quite simple.
In my pipeline I have Task A.
After Task A I either need to execute Task B1 or Task B2 - but not both -> Split. This could also be B1/B2/B3/B4/... In my example I have a mutually exclusive when condition on tasks B1 and B2 (is condition / is not condition) guaranteeing that one task gets executed.
After either task finishes I would like to continue the pipeline with task C -> Join.
I tried to set this up with runAfter clauses on the tasks - but the pipeline just ends after either Task B1 or B2 is executed - Task C is never reached.
The text was updated successfully, but these errors were encountered: