Skip to content

Commit

Permalink
Adds an initial implementation for conditionals
Browse files Browse the repository at this point in the history
In this implementation, condition evaluations aka ConditionChecks are
backed by TaskRuns. All conditionChecks associated with a `PipelineTask`
have to succeed before the task is executed. If a ConditionCheck fails,
the PipelineTask's associated TaskRun is marked failed i.e. its
`Status.ConditionSucceeded` is False. However, the PipelineRun itself
is not marked as failed.
  • Loading branch information
dibyom committed Jul 3, 2019
1 parent f79d669 commit e5c545c
Show file tree
Hide file tree
Showing 11 changed files with 1,292 additions and 79 deletions.
2 changes: 2 additions & 0 deletions cmd/controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ func main() {
taskRunInformer := pipelineInformerFactory.Tekton().V1alpha1().TaskRuns()
resourceInformer := pipelineInformerFactory.Tekton().V1alpha1().PipelineResources()
podInformer := kubeInformerFactory.Core().V1().Pods()
conditionInformer := pipelineInformerFactory.Tekton().V1alpha1().Conditions()

pipelineInformer := pipelineInformerFactory.Tekton().V1alpha1().Pipelines()
pipelineRunInformer := pipelineInformerFactory.Tekton().V1alpha1().PipelineRuns()
Expand All @@ -140,6 +141,7 @@ func main() {
clusterTaskInformer,
taskRunInformer,
resourceInformer,
conditionInformer,
timeoutHandler,
)
// Build all of our controllers, with the clients constructed above.
Expand Down
79 changes: 79 additions & 0 deletions examples/pipelineruns/conditional-pipelinerun.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
apiVersion: tekton.dev/v1alpha1
kind: Condition
metadata:
name: always-true
spec:
check:
image: ubuntu
command: ["/bin/bash"]
args: ['-c', 'exit 0']
---
apiVersion: tekton.dev/v1alpha1
kind: Condition
metadata:
name: always-false
spec:
params:
check:
image: ubuntu
command: ["/bin/bash"]
args: ['-c', 'exit 1']
---
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: pipeline-git
spec:
type: git
params:
- name: revision
value: master
- name: url
value: https://github.com/tektoncd/pipeline
---
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: list-files
spec:
inputs:
resources:
- name: workspace
type: git
steps:
- name: run-ls
image: ubuntu
command: ["/bin/bash"]
args: ['-c', 'ls -al ${inputs.resources.workspace.path}']
---
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: list-files-pipeline
spec:
resources:
- name: source-repo
type: git
tasks:
- name: list-files
taskRef:
name: list-files
conditions:
- conditionRef: always-true
resources:
inputs:
- name: workspace
resource: source-repo
---
apiVersion: tekton.dev/v1alpha1
kind: PipelineRun
metadata:
name: demo-condtional-pr
spec:
pipelineRef:
name: list-files-pipeline
serviceAccount: 'default'
resources:
- name: source-repo
resourceRef:
name: pipeline-git
13 changes: 7 additions & 6 deletions pkg/apis/pipeline/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ package pipeline

// GroupName is the Kubernetes resource group name for Pipeline types.
const (
GroupName = "tekton.dev"
TaskLabelKey = "/task"
TaskRunLabelKey = "/taskRun"
PipelineLabelKey = "/pipeline"
PipelineRunLabelKey = "/pipelineRun"
PipelineTaskLabelKey = "/pipelineTask"
GroupName = "tekton.dev"
TaskLabelKey = "/task"
TaskRunLabelKey = "/taskRun"
PipelineLabelKey = "/pipeline"
PipelineRunLabelKey = "/pipelineRun"
PipelineTaskLabelKey = "/pipelineTask"
PipelineRunConditionCheckKey = "/pipelineConditionCheck"
)
Loading

0 comments on commit e5c545c

Please sign in to comment.