はじめに
先日Tektonに入門した記事を公開しましたが、TektonにはTask
Pipeline
以外にもTrigger
という重要な機能が存在します。Triggerを利用することで、git pushなどのイベントを契機にパイプラインを実行することが可能となり、CI/CDパイプラインを構築するうえで重要なものです。
今回はTekton Triggerの第一歩として、git push
などの実践的なイベントを利用する前に、Tekton Triggerの概要と簡単な例について紹介します。
Tekton Triggerとは
Tekton Triggerは、外部からのイベントを契機にパイプラインの実行を開始する機能です。イベントのペイロードから受け取ったfield値をTektonリソースにマップすることが可能です。
Tekton Triggerに関するCustom Resourceには、以下のようなものがあります。
- TriggerTemplate:Triggerによって実行するリソースを定義します。
resourceTemplate
というフィールドでTektonリソース(PipelineRun
など)を定義し、イベント発生後に定義したリソースを実行します。 - TriggerBinding:イベントとトリガーとを紐づけます。具体的には、イベントからfield値を取得し、それをパラメータとして保存します。保存したパラメータは
TriggerTemplate
などで利用することができます。 - EventListener:外部からのイベントに関するデータを受け付けます。利用できるデータはHTTPベースのJSONペイロードです。
EventListener
では、イベントから受け取ったデータを渡すTriggerBinding
と、それを適用するTriggerTemplate
を指定します。またEventListener
ではinterceptor
という項目があり、受け取るイベントの種類やデータに含まれる値などを指定することが可能です。
検証内容
今回はTektonのGitHubリポジトリに含まれるこちらのexampleを実行し、そこで利用する定義ファイルやその動きについて調べました。
Triggerの構成
まずは今回の検証内容を簡単に紹介します。大まかな流れは、以下の図の通りです。
上図の左側から辿っていくと、
- クライアントが特定のFieldを含むPOSTリクエストを送信
EventListener
が通信を受け取り、Field値をTriggerBinding
へ渡すTriggerBinding
で定義されたパラメータをTriggerTemplate
へ渡し、PipelineResource
が開始されるPipelineRun
により、指定のPipeline
Task
を実行する- 上記リソースは、専用の
Service Account
によって実行される
各定義ファイルの構成
次に、パイプラインで利用する各定義ファイルの内容を見ていきます。今回のパイプラインで利用するリソースとその名前は以下の通りです。
リソース種別 | リソース名 | 用途 |
---|---|---|
EventListener | listener |
イベントを受け取り、Trigger関連のリソースに情報を渡す |
TriggerBinding | pipeline-binding |
EventListener から値を受け取りTriggerTemplate へ渡す |
message-binding |
TriggerTemplate へ値を渡す |
|
TriggerTemplate | pipeline-template |
TriggerBinding からパラメータ値を受け取り、定義したPipelineRun を実行する |
Pipeline | simple-pipeline |
PipelineRun で実行するパイプラインを定義する |
Task | say-hello |
Pipeline に含むタスクの一つ。Content-Typeを表示する |
say-message |
Pipeline に含むタスクの一つ。messageを表示する |
|
say-bye |
Pipeline に含むタスクの一つ。指定の文字を表示する |
上記定義ファイル間のつながりは、以下のようになります。画像では小さくて読めないと思うので、画像をクリックして見てください。
こまごまと書いていますが、主なポイントは以下の通りです。
curl
でのPOSTリクエスト中に設定するContent-Type
head_commit
repository
の値をTriggerBinding
が受け取るEventListener
はTriggerTemplate
と2つのTriggerBinding
を紐づけているTriggerTemplate
には`PipelineRun
の定義を記載しており、PipelineRun
にはPipeline
と3つのTask
が紐づいている
実際の動作
ここからは実際の動作について見ていきます。なお、利用した環境は前回のTekton紹介記事と同じものを利用しています。
Kubernetesクラスターを用意したら、まずはTektonをインストールします。Tektonのインストールはこちらのページに記載されている通り、Pipeline・Triggerに関するリソースを作成します。
# Tekton Pipelineインストール $ kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml namespace/tekton-pipelines created podsecuritypolicy.policy/tekton-pipelines created clusterrole.rbac.authorization.k8s.io/tekton-pipelines-controller-cluster-access created clusterrole.rbac.authorization.k8s.io/tekton-pipelines-controller-tenant-access created clusterrole.rbac.authorization.k8s.io/tekton-pipelines-webhook-cluster-access created clusterrole.rbac.authorization.k8s.io/tekton-pipelines-leader-election created role.rbac.authorization.k8s.io/tekton-pipelines-controller created role.rbac.authorization.k8s.io/tekton-pipelines-webhook created serviceaccount/tekton-pipelines-controller created serviceaccount/tekton-pipelines-webhook created clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller-cluster-access created clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller-leaderelection created clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller-tenant-access created clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-webhook-cluster-access created clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-webhook-leaderelection created rolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller created rolebinding.rbac.authorization.k8s.io/tekton-pipelines-webhook created customresourcedefinition.apiextensions.k8s.io/clustertasks.tekton.dev created customresourcedefinition.apiextensions.k8s.io/conditions.tekton.dev created customresourcedefinition.apiextensions.k8s.io/images.caching.internal.knative.dev created customresourcedefinition.apiextensions.k8s.io/pipelines.tekton.dev created customresourcedefinition.apiextensions.k8s.io/pipelineruns.tekton.dev created customresourcedefinition.apiextensions.k8s.io/pipelineresources.tekton.dev created customresourcedefinition.apiextensions.k8s.io/tasks.tekton.dev created customresourcedefinition.apiextensions.k8s.io/taskruns.tekton.dev created secret/webhook-certs created validatingwebhookconfiguration.admissionregistration.k8s.io/validation.webhook.pipeline.tekton.dev created mutatingwebhookconfiguration.admissionregistration.k8s.io/webhook.pipeline.tekton.dev created validatingwebhookconfiguration.admissionregistration.k8s.io/config.webhook.pipeline.tekton.dev created clusterrole.rbac.authorization.k8s.io/tekton-aggregate-edit created clusterrole.rbac.authorization.k8s.io/tekton-aggregate-view created configmap/config-artifact-bucket created configmap/config-artifact-pvc created configmap/config-defaults created configmap/feature-flags created configmap/config-leader-election created configmap/config-logging created configmap/config-observability created deployment.apps/tekton-pipelines-controller created service/tekton-pipelines-controller created deployment.apps/tekton-pipelines-webhook created service/tekton-pipelines-webhook created # リソースの確認 $ kubectl get ns NAME STATUS AGE default Active 14m kube-node-lease Active 14m kube-public Active 14m kube-system Active 14m tekton-pipelines Active 48s $ kubectl get pods -n tekton-pipelines NAME READY STATUS RESTARTS AGE tekton-pipelines-controller-559bd4d4df-w5fm6 1/1 Running 0 55s tekton-pipelines-webhook-7bfd859f8c-2qdd8 1/1 Running 0 55s
# Tekton Triggerインストール $ kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml podsecuritypolicy.policy/tekton-triggers created clusterrole.rbac.authorization.k8s.io/tekton-triggers-admin created serviceaccount/tekton-triggers-controller created clusterrolebinding.rbac.authorization.k8s.io/tekton-triggers-controller-admin created customresourcedefinition.apiextensions.k8s.io/clustertriggerbindings.triggers.tekton.dev created customresourcedefinition.apiextensions.k8s.io/eventlisteners.triggers.tekton.dev created customresourcedefinition.apiextensions.k8s.io/triggerbindings.triggers.tekton.dev created customresourcedefinition.apiextensions.k8s.io/triggertemplates.triggers.tekton.dev created secret/triggers-webhook-certs created validatingwebhookconfiguration.admissionregistration.k8s.io/validation.webhook.triggers.tekton.dev created mutatingwebhookconfiguration.admissionregistration.k8s.io/webhook.triggers.tekton.dev created validatingwebhookconfiguration.admissionregistration.k8s.io/config.webhook.triggers.tekton.dev created clusterrole.rbac.authorization.k8s.io/tekton-triggers-aggregate-edit created clusterrole.rbac.authorization.k8s.io/tekton-triggers-aggregate-view created configmap/config-logging-triggers created configmap/config-observability-triggers created service/tekton-triggers-controller created deployment.apps/tekton-triggers-controller created service/tekton-triggers-webhook created deployment.apps/tekton-triggers-webhook created # リソース確認 $ kubectl get pods -n tekton-pipelines NAME READY STATUS RESTARTS AGE tekton-pipelines-controller-559bd4d4df-w5fm6 1/1 Running 0 72s tekton-pipelines-webhook-7bfd859f8c-2qdd8 1/1 Running 0 72s tekton-triggers-controller-96b9d4dfd-ckpvh 1/1 Running 0 12s tekton-triggers-webhook-b7c46d8ff-926hw 1/1 Running 0 11s $ kubectl get svc -n tekton-pipelines NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE tekton-pipelines-controller ClusterIP 172.21.9.211 <none> 9090/TCP 15m tekton-pipelines-webhook ClusterIP 172.21.1.189 <none> 9090/TCP,8008/TCP,443/TCP 15m tekton-triggers-controller ClusterIP 172.21.6.147 <none> 9090/TCP 14m tekton-triggers-webhook ClusterIP 172.21.5.232 <none> 443/TCP 14m
次にパイプライン作成に利用する定義ファイルをGitHubから取得し、必要なファイルを使って各リソースを作成します。
# 定義ファイルのダウンロード $ git clone https://github.com/tektoncd/triggers.git $ cd triggers/example $ ll total 12 drwxr-xr-x 1 root root 4096 Jul 9 15:59 ./ drwxr-xr-x 1 root root 4096 Jul 9 15:59 ../ -rw-r--r-- 1 root root 4850 Jul 9 15:59 README.md drwxr-xr-x 1 root root 4096 Jul 9 15:59 bitbucket/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 clustertriggerbindings/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 cron/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 event-interceptors/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 eventlisteners/ -rw-r--r-- 1 root root 1994 Jul 9 15:59 example-pipeline.yaml drwxr-xr-x 1 root root 4096 Jul 9 15:59 github/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 gitlab/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 role-resources/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 triggerbindings/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 triggertemplates/ drwxr-xr-x 1 root root 4096 Jul 9 15:59 v1alpha1-task/
# リソースの作成 ## Tektonリソースを操作するServiceAccount・Roleなど $ kubectl apply -f role-resources/secret.yaml secret/tekton-triggers-example-secret created $ kubectl apply -f role-resources/serviceaccount.yaml serviceaccount/tekton-triggers-example-sa created $ kubectl apply -f role-resources/triggerbinding-roles/ rolebinding.rbac.authorization.k8s.io/tekton-triggers-example-binding created role.rbac.authorization.k8s.io/tekton-triggers-example-minimal created ## TriggerTemplate・TriggerBinding・EventListener $ kubectl apply -f triggertemplates/triggertemplate.yaml triggertemplate.triggers.tekton.dev/pipeline-template created $ kubectl apply -f triggerbindings/triggerbinding.yaml triggerbinding.triggers.tekton.dev/pipeline-binding created $ kubectl apply -f triggerbindings/triggerbinding-message.yaml triggerbinding.triggers.tekton.dev/message-binding created $ kubectl apply -f eventlisteners/eventlistener.yaml eventlistener.triggers.tekton.dev/listener created ## Pipeline $ kubectl apply -f example-pipeline.yaml
## リソース確認 $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE el-listener ClusterIP 172.21.14.31 <none> 8080/TCP 39s kubernetes ClusterIP 172.21.0.1 <none> 443/TCP 28m $ kubectl get pods NAME READY STATUS RESTARTS AGE el-listener-6f676cd886-4kbp7 1/1 Running 0 68s $ kubectl get eventlistener NAME ADDRESS AVAILABLE REASON listener http://el-listener.default.svc.cluster.local:8080 True MinimumReplicasAvailable $ kubectl get triggertemplate NAME AGE pipeline-template 2m49s $ kubectl get triggerbindings NAME AGE message-binding 2m25s pipeline-binding 2m37s $ kubectl get task NAME AGE say-bye 6s say-hello 7s say-message 6s $ kubectl get pipeline NAME AGE simple-pipeline 12s $ kubectl get tekton-pipelines NAME AGE pipeline.tekton.dev/simple-pipeline 29s NAME AGE task.tekton.dev/say-bye 29s task.tekton.dev/say-hello 30s task.tekton.dev/say-message 29s
リソースの作成が完了したので、curl
コマンドによってPOSTリクエストを送信します。なお、curl
コマンドを実行する前にEventListener
Podへアクセスするための操作を行います。ここではkubectl port-forward
により、ローカルからEventListener
Podへのアクセスを可能にします。
# Port forward $ kubectl port-forward $(kubectl get pod -o=name -l eventlistener=listener) 8080 Forwarding from 127.0.0.1:8080 -> 8080 Forwarding from [::1]:8080 -> 8080 # POSTリクエスト ## 別のターミナルから実行する $ curl -X POST http://localhost:8080 -H 'Content-Type: application/json' -H 'X-Hub-Signature: sha1=2da37dcb9404ff17b714ee7a505c384758ddeb7b' -d '{"head_commit":{"id": "master"},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' {"eventListener":"listener","namespace":"default","eventID":"xs7pp"}
上記コマンド実行後、Podやログを確認します。
# 実行結果の確認 ## PipelineRun (実行中) $ kubectl get pipelinerun NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME simple-pipeline-run-wmpnx Unknown Running 47s ## Podの状態遷移 ## Pipeline中のTaskがPodとして立ち上がる $ kubectl get pods -w NAME READY STATUS RESTARTS AGE el-listener-6f676cd886-4kbp7 1/1 Running 0 97m simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx 0/2 Pending 0 0s simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx 0/2 Pending 0 0s simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx 0/2 Init:0/1 0 0s simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx 0/2 PodInitializing 0 6s simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx 2/2 Running 0 17s simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx 2/2 Running 0 17s simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx 0/2 Completed 0 24s simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd 0/2 Pending 0 0s simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd 0/2 Pending 0 0s simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd 0/2 Init:0/1 0 0s simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd 0/2 PodInitializing 0 2s simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd 2/2 Running 0 6s simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd 2/2 Running 0 6s simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd 0/2 Completed 0 15s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 0/2 Pending 0 0s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 0/2 Pending 0 0s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 0/2 Init:0/1 0 0s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 0/2 PodInitializing 0 2s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 2/2 Running 0 6s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 2/2 Running 0 6s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 1/2 Running 0 13s simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb 0/2 Completed 0 14s ## tknコマンド ## Pipelineのログを表示する $ tkn pipeline logs --last -f [say-hello : git-source-git-source-hqhll] {"level":"info","ts":1595648342.4830065,"caller":"git/git.go:139","msg":"Successfully cloned https://github.com/tektoncd/triggers.git @ 81dc28e2784c58798fcc1cbe851de4f661913ee9 (grafted, HEAD, origin/master) in path /workspace/git-source"} [say-hello : git-source-git-source-hqhll] {"level":"info","ts":1595648342.5367808,"caller":"git/git.go:180","msg":"Successfully initialized and updated submodules in path /workspace/git-source"} [say-hello : say-hi] Hello Triggers! [say-hello : say-hi] Content-Type is application/json [say-message : git-source-git-source-2k5wl] {"level":"info","ts":1595648357.5576613,"caller":"git/git.go:139","msg":"Successfully cloned https://github.com/tektoncd/triggers.git @ 81dc28e2784c58798fcc1cbe851de4f661913ee9 (grafted, HEAD, origin/master) in path /workspace/git-source"} [say-message : git-source-git-source-2k5wl] {"level":"info","ts":1595648357.6270146,"caller":"git/git.go:180","msg":"Successfully initialized and updated submodules in path /workspace/git-source"} [say-message : say-message] Hello from the Triggers EventListener! [say-bye : git-source-git-source-5qpll] {"level":"info","ts":1595648369.9986367,"caller":"git/git.go:139","msg":"Successfully cloned https://github.com/tektoncd/triggers.git @ 81dc28e2784c58798fcc1cbe851de4f661913ee9 (grafted, HEAD, origin/master) in path /workspace/git-source"} [say-bye : git-source-git-source-5qpll] {"level":"info","ts":1595648370.0498636,"caller":"git/git.go:180","msg":"Successfully initialized and updated submodules in path /workspace/git-source"} [say-bye : say-bye] Goodbye Triggers! ## PipelineRun (実行後) $ kubectl get pipelinerun NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME simple-pipeline-run-wmpnx True Succeeded 59s 6s $ kubectl get tekton-pipelines NAME AGE pipeline.tekton.dev/simple-pipeline 97m NAME AGE task.tekton.dev/say-bye 97m task.tekton.dev/say-hello 97m task.tekton.dev/say-message 97m NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME taskrun.tekton.dev/simple-pipeline-run-wmpnx-say-bye-b6gmk True Succeeded 2m59s 2m45s taskrun.tekton.dev/simple-pipeline-run-wmpnx-say-hello-6rjbj True Succeeded 3m38s 3m14s taskrun.tekton.dev/simple-pipeline-run-wmpnx-say-message-kw27w True Succeeded 3m14s 2m59s NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME pipelinerun.tekton.dev/simple-pipeline-run-wmpnx True Succeeded 3m38s 2m45s
以上のようにパイプラインに実行が完了しました。
パイプライン実行後にPipelineRun
リソースを確認すると、curl
で指定したパラメータがSpec
に設定されていることがわかります。
# PipelineRunの詳細確認 $ kubectl describe pipelinerun.tekton.dev/simple-pipeline-run-wmpnx Name: simple-pipeline-run-wmpnx Namespace: default Labels: tekton.dev/pipeline=simple-pipeline triggers.tekton.dev/eventlistener=listener triggers.tekton.dev/trigger=foo-trig triggers.tekton.dev/triggers-eventid=xs7pp Annotations: API Version: tekton.dev/v1beta1 Kind: PipelineRun Metadata: Creation Timestamp: 2020-07-25T03:38:39Z Generate Name: simple-pipeline-run- Generation: 1 Resource Version: 1109314995 Self Link: /apis/tekton.dev/v1beta1/namespaces/default/pipelineruns/simple-pipeline-run-wmpnx UID: 5c242ed8-ed42-420a-97b8-f8a233b85d17 Spec: Params: Name: message Value: Hello from the Triggers EventListener! Name: contenttype Value: application/json★ Pipeline Ref: Name: simple-pipeline Resources: Name: git-source Resource Spec: Params: Name: revision Value: master★ Name: url Value: https://github.com/tektoncd/triggers.git★ Type: git Timeout: 1h0m0s Status: Completion Time: 2020-07-25T03:39:32Z Conditions: Last Transition Time: 2020-07-25T03:39:32Z Message: Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0 Reason: Succeeded Status: True Type: Succeeded Pipeline Spec: Params: Default: This is the default message Description: The message to print Name: message Type: string Description: The Content-Type of the event Name: contenttype Type: string Resources: Name: git-source Type: git Tasks: Name: say-hello Params: Name: contenttype Value: $(params.contenttype) Resources: Inputs: Name: git-source Resource: git-source Task Ref: Kind: Task Name: say-hello Name: say-message Params: Name: message Value: $(params.message) Resources: Inputs: Name: git-source Resource: git-source Run After: say-hello Task Ref: Kind: Task Name: say-message Name: say-bye Resources: Inputs: Name: git-source Resource: git-source Run After: say-message Task Ref: Kind: Task Name: say-bye Start Time: 2020-07-25T03:38:39Z Task Runs: simple-pipeline-run-wmpnx-say-bye-b6gmk: Pipeline Task Name: say-bye Status: Completion Time: 2020-07-25T03:39:32Z Conditions: Last Transition Time: 2020-07-25T03:39:32Z Message: All Steps have completed executing Reason: Succeeded Status: True Type: Succeeded Pod Name: simple-pipeline-run-wmpnx-say-bye-b6gmk-pod-5p5gb Resources Result: Key: commit Resource Name: git-source Resource Ref: Name: git-source Value: 81dc28e2784c58798fcc1cbe851de4f661913ee9 Start Time: 2020-07-25T03:39:18Z Steps: Container: step-say-bye Image ID: docker-pullable://bash@sha256:21caabbff34a7432be0f88d24f756a96f1e5bbb93703e8a8b34df7c5536d466a Name: say-bye Terminated: Container ID: docker://0b2ab225233e4d9a01c4a0e456edc45fe9e5e6e0d51455c6e14a8d00851cb7a7 Exit Code: 0 Finished At: 2020-07-25T03:39:31Z Reason: Completed Started At: 2020-07-25T03:39:31Z Container: step-git-source-git-source-5qpll Image ID: docker-pullable://gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init@sha256:f7524d37431fa7d301dfa5c6d0bb3c2e2b029172ec2f823f0e0c6ce9d3c2718c Name: git-source-git-source-5qpll Terminated: Container ID: docker://271ac24ae9ce43124b94b2b9efec89319fb034f94e5f1cf8eba2d7c29ac01d0c Exit Code: 0 Finished At: 2020-07-25T03:39:30Z Message: [{"key":"commit","value":"81dc28e2784c58798fcc1cbe851de4f661913ee9","resourceName":"git-source","resourceRef":{"name":"git-source"}}] Reason: Completed Started At: 2020-07-25T03:39:24Z Task Spec: Resources: Inputs: Name: git-source Type: git Steps: Args: echo 'Goodbye Triggers!' Command: bash -c Image: bash Name: say-bye Resources: simple-pipeline-run-wmpnx-say-hello-6rjbj: Pipeline Task Name: say-hello Status: Completion Time: 2020-07-25T03:39:03Z Conditions: Last Transition Time: 2020-07-25T03:39:03Z Message: All Steps have completed executing Reason: Succeeded Status: True Type: Succeeded Pod Name: simple-pipeline-run-wmpnx-say-hello-6rjbj-pod-2dktx Resources Result: Key: commit Resource Name: git-source Resource Ref: Name: git-source Value: 81dc28e2784c58798fcc1cbe851de4f661913ee9 Start Time: 2020-07-25T03:38:39Z Steps: Container: step-say-hi Image ID: docker-pullable://bash@sha256:21caabbff34a7432be0f88d24f756a96f1e5bbb93703e8a8b34df7c5536d466a Name: say-hi Terminated: Container ID: docker://9ad1928c51ec681d1e44524de6cbe0e835d4e4ddffd5747690703cc4d078f0ba Exit Code: 0 Finished At: 2020-07-25T03:39:02Z Reason: Completed Started At: 2020-07-25T03:39:02Z Container: step-git-source-git-source-hqhll Image ID: docker-pullable://gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init@sha256:f7524d37431fa7d301dfa5c6d0bb3c2e2b029172ec2f823f0e0c6ce9d3c2718c Name: git-source-git-source-hqhll Terminated: Container ID: docker://b4b05d34327c0a5486b2515767c42095418b5baae15553e6b074c8497d7b1373 Exit Code: 0 Finished At: 2020-07-25T03:39:02Z Message: [{"key":"commit","value":"81dc28e2784c58798fcc1cbe851de4f661913ee9","resourceName":"git-source","resourceRef":{"name":"git-source"}}] Reason: Completed Started At: 2020-07-25T03:38:56Z Task Spec: Params: Description: The Content-Type of the event Name: contenttype Type: string Resources: Inputs: Name: git-source Type: git Steps: Args: echo -e 'Hello Triggers!\nContent-Type is $(params.contenttype)' Command: bash -c Image: bash Name: say-hi Resources: simple-pipeline-run-wmpnx-say-message-kw27w: Pipeline Task Name: say-message Status: Completion Time: 2020-07-25T03:39:18Z Conditions: Last Transition Time: 2020-07-25T03:39:18Z Message: All Steps have completed executing Reason: Succeeded Status: True Type: Succeeded Pod Name: simple-pipeline-run-wmpnx-say-message-kw27w-pod-6brzd Resources Result: Key: commit Resource Name: git-source Resource Ref: Name: git-source Value: 81dc28e2784c58798fcc1cbe851de4f661913ee9 Start Time: 2020-07-25T03:39:03Z Steps: Container: step-say-message Image ID: docker-pullable://bash@sha256:21caabbff34a7432be0f88d24f756a96f1e5bbb93703e8a8b34df7c5536d466a Name: say-message Terminated: Container ID: docker://ddf9b4e4c0193881be829eeddcdf55520a0f75af1895e5f48a39bd5b30ee1294 Exit Code: 0 Finished At: 2020-07-25T03:39:17Z Reason: Completed Started At: 2020-07-25T03:39:17Z Container: step-git-source-git-source-2k5wl Image ID: docker-pullable://gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init@sha256:f7524d37431fa7d301dfa5c6d0bb3c2e2b029172ec2f823f0e0c6ce9d3c2718c Name: git-source-git-source-2k5wl Terminated: Container ID: docker://201ea779bb6556909779bfa9e10c0eb7b089decaac3bdb1243cf3d9bb70bc9c5 Exit Code: 0 Finished At: 2020-07-25T03:39:17Z Message: [{"key":"commit","value":"81dc28e2784c58798fcc1cbe851de4f661913ee9","resourceName":"git-source","resourceRef":{"name":"git-source"}}] Reason: Completed Started At: 2020-07-25T03:39:10Z Task Spec: Params: Default: This is the default message Description: The message to print Name: message Type: string Resources: Inputs: Name: git-source Type: git Steps: Args: echo '$(params.message)' Command: bash -c Image: bash Name: say-message Resources: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Started 4m12s PipelineRun Normal Running 4m12s PipelineRun Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 3, Skipped: 0 Normal Running 3m48s PipelineRun Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 2, Skipped: 0 Normal Running 3m33s PipelineRun Tasks Completed: 2 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0 Normal Succeeded 3m19s PipelineRun Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0