diff --git a/teps/0077-pipeline-partial-execution.md b/teps/0077-pipeline-partial-execution.md new file mode 100644 index 000000000..3f8582502 --- /dev/null +++ b/teps/0077-pipeline-partial-execution.md @@ -0,0 +1,224 @@ +--- +status: proposed +title: Custom Task SDK +creation-date: '2021-07-21' +last-updated: '2021-07-21' +authors: +- '@jerop' +- '@bobcatfish' +- '@Tomcli' +- '@ScrapCodes' +--- + +# TEP-0077: Pipeline partial execution + + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) + - [Use Cases (optional)](#use-cases-optional) +- [Requirements](#requirements) +- [Proposal](#proposal) + - [Notes/Caveats (optional)](#notescaveats-optional) + - [Risks and Mitigations](#risks-and-mitigations) + - [User Experience (optional)](#user-experience-optional) + - [Performance (optional)](#performance-optional) +- [Design Details](#design-details) +- [Test Plan](#test-plan) +- [Design Evaluation](#design-evaluation) +- [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [Infrastructure Needed (optional)](#infrastructure-needed-optional) +- [Upgrade & Migration Strategy (optional)](#upgrade--migration-strategy-optional) +- [Implementation Pull request(s)](#implementation-pull-request-s) +- [References (optional)](#references-optional) + + +## Summary + +Add an ability for `PipelineRun` to have disabled tasks i.e. a `PipelineRun` +can execute a `Pipeline` partially. + +Allow `PipelineRun` to be created from previous `PipelineRun`. + +So, a `PipelineRun` can be partially run or cancelled at run time, and +resumed at a later point with the help of work proposed in this TEP. + +Together these will bring in the ability to resume/retry a failed `PipelineRun` + +## Motivation + +1. A very long Pipeline may fail due to a transient failure, and the user may + want to only rerun the `Tasks` that failed. +2. It is not enough to `retry` a `PipelineTask` n times, as the failures can + be due to e.g. service outage. A manual resume/ retry may be helpful. +3. Iterate quickly, by disabling tasks that take longer time. This can be done + at run time, i.e. without editing pipeline definition. + +### Goals + +- Partially execute a `Pipeline`, by disabling tasks. +- Resume a failed or cancelled `PipelineRun` from previous `PipelineRun`. +- Discuss how the results/workspaces of disabled tasks can be referenced or + populated from previous `PipelineRun`. + +### Non-Goals + +- TBD. + +### Use Cases (optional) + + + +## Requirements + + + +## Proposal + + + +### Notes/Caveats (optional) + + + +### Risks and Mitigations + + + +### User Experience (optional) + + + +### Performance (optional) + + + +## Design Details + + + +## Test Plan + + + +## Design Evaluation + + +## Drawbacks + + + +## Alternatives + + + +## Infrastructure Needed (optional) + + + +## Upgrade & Migration Strategy (optional) + + + +## Implementation Pull request(s) + + + +## References (optional) + +1. [Google Doc: Disabling a Task in a Pipeline](https://docs.google.com/document/d/1rleshixafJy4n1CwFlfbAJuZjBL1PQSm3b0Q9s1B_T8/edit#heading=h.jz9jia3av6h1) +2. [TEP-0065-rejected](https://github.com/tektoncd/community/pull/422) diff --git a/teps/README.md b/teps/README.md index c65b894a5..bb1b86918 100644 --- a/teps/README.md +++ b/teps/README.md @@ -218,3 +218,4 @@ This is the complete list of Tekton teps: |[TEP-0070](0070-tekton-catalog-task-platform-support.md) | Platform support in Tekton catalog | proposed | 2021-06-02 | |[TEP-0071](0071-custom-task-sdk.md) | Custom Task SDK | proposed | 2021-06-15 | |[TEP-0072](0072-results-json-serialized-records.md) | Results: JSON Serialized Records | proposed | 2021-05-11 | +|[TEP-0077](0077-pipeline-partial-execution.md) | Pipeline partial execution | proposed | 2021-07-21 |