Tekton Pipelines 入門第2 部分— 觸發器
「【只做懂你de雲原生乾貨知識共享】」

Tekton是一個開源項目,用於創建CI / CD系統, 允許開發人員跨雲提供商和本地系統構建、測試和部署。
在第1 部分中,我通過實際的日常任務討論了基本管道。在第2 部分中,我將通過一個真正的GitOps(應用程序CI/CD 模式)觸發器範例來解決流水線觸發器。
對於這兩部分的相關代碼可以參考。
https://github.com/yossicohn/tekton-pipelines
讓我們回顧一下Triggers 涉及的一些用例以及我們如何使用Triggers?
Triggers是端點,這意味著從概念上講,任何可以發起HTTP 請求的東西都可以觸發Tekton Triggers。
CI/CD 是我們將使用Tekton Triggers 的主要用例。
意思是,偵聽來自參與這些流的實體的事件。
您將在CI/CD 工作流中使用的觸發器範例:
1、Git Commit—— 觸發器監聽git commit請求事件。觸發器執行單元測試Pipeline在提交的代碼上
2、Git Push — 觸發器監聽git push(通常在測試成功完成後)觸發器驗證測試結果並執行構建代碼Pipeline並將鏡像推送到Container Registry
3、Container Registry發送一個事件,觸發一個Pipeline它將構建工件推送到暫存環境。
在我們弄髒手之前(實際上這次不那麼臟)我們需要一些基本訊息/定義
為什麼Tekton 會觸發
Tekton Triggers 允許您輕鬆創建成熟的CI/CD 系統,您可以在其中完全使用Kubernetes 資源定義所有機制。
什麼是Tekton Triggers
Tekton Triggers 是一個Tekton 組件,它允許您從各種來源的事件中檢測和提取訊息,並確定性地實例化和執行TaskRuns和PipelineRuns基於該訊息。
在下面的架構中,我們可以看到Tekton Trigger 流程。
這EventListener正在獲取一個請求,它實例化TriggerBinding和TriggerTemplate創建已定義資源的模板( PipelineRun, TaskRun)

來自: : https //
Tekton 觸發器的工作原理
Tekton Triggers 由在Kubernetes 集群上運行的控制器服務以及擴展Tekton Pipelines 功能以支持事件的Kubernetes 自定義資源定義(CRD) 組成
讓我們回顧一下觸發器流程中使用的CRD
EventListener- 在Kubernetes 集群上的指定端口上偵聽事件。指定一個或多個Triggers
TriggerTemplate- 指定資源的藍圖,例如TaskRun或者PipelineRun
TriggerBinding- 指定要從中提取數據的事件負載中的字段以及相應的字段TriggerTemplate
ClusterTriggerBinding- 集群範圍的版本TriggerBinding,對於在集群中重用很有用
Interceptor- 針對特定平台的“全能”事件處理器,在TriggerBinding使您能夠執行負載過濾、驗證(使用secret)、轉換、定義和測試觸發條件以及其他有用的處理
所以把所有這些拼接在一起:
觸發器指定當時會發生什麼EventListener 檢測到事件。觸髮指定TriggerTemplate ,一個TriggerBinding 和任選的攔截器

Tekton 事件觸發器模式來自:
讓我們使用我們新的Tekton Triggers 知識並將來自Github 的基本觸發器添加到我們的第1 部分pipeline中
該圖是一個簡單的pipeline,執行以下操作:
1、拉取私有Github 倉庫— 通過PipelineResource
2、使用Kaniko 通過Tekton Task 從源代碼構建和推送鏡像
3、憑證通過secret提供並正確安裝到Tekton Pipeline 並最終安裝到Kaniko Tekton Task
現在,我們將從Github Push/PR Events 添加一個觸發器來運行pipeline
請注意,所有資源都可以在第2 部分觸發器文件夾中找到。
觸發器模板
這Trigger Template定義我們要在觸發器激活時創建的Tekton 資源的模板。
那將意味著一個TaskRun或者PipelineRun.
正如你在下面看到的,我們有我們的定義PipelineRunTekton Resource,看起來和原始的PipelineRun的第1 部分一模一樣
當觸發器被激活時,模板被創建(使用我們給它的特殊憑據,查看rbac.yaml )。
模板將填充由生成的值TriggerBinding資源。
apiVersion: triggers.tekton.dev/v1alpha1 apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
kind: TriggerTemplate apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
metadata: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
name: build-push-image-template apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
namespace: default apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
spec: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
params: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: dockerfile-path apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
description: dockerfile-path. apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: image-url apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
description: image-url. apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: path-to-context apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
description: path-to-context. apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
resourcetemplates: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- apiVersion: tekton.dev/v1beta1 apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
kind: PipelineRun apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
metadata: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
generateName: pipelinerun-build-push-image-$(uid) apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
namespace: default apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
spec: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
serviceAccountName: git-serviceaccount apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
pipelineRef: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
name: pipeline-build-push-image apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
resources: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: input-git apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
resourceRef: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
name: go-api-skeleton-git apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: output-image apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
resourceRef: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
name: go-api-skeleton-image apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
workspaces: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: shared-data apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
volumeClaimTemplate: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
spec: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
accessModes: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- ReadWriteOnce apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
resources: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
requests: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
storage: 1Gi apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
params: apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: dockerfile-path apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
value: "./Dockerfile" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: image-url apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
value: "yossicohn/app" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: path-to-context apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: build-push-image-template namespace: default spec: params: - name: dockerfile-path description: dockerfile-path. - name: image-url description: image-url. - name: path-to-context description: path-to-context. resourcetemplates: - apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: generateName: pipelinerun-build-push-image-$(uid) namespace: default spec: serviceAccountName: git-serviceaccount pipelineRef: name: pipeline-build-push-image resources: - name: input-git resourceRef: name: go-api-skeleton-git - name: output-image resourceRef: name: go-api-skeleton-image workspaces: - name: shared-data volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
TriggerBinding
TriggerBinding 資源提取從查詢調用接收的值,然後設置params有了這些價值觀。在這個例子中為了簡單起見,我們使用硬編碼值
params: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: dockerfile-path params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
value: "./Dockerfile" params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: image-url params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
value: "yossicohn/app" params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: path-to-context params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
value: "workspace/shared-data" params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
apiVersion: triggers.tekton.dev/v1alpha1 params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
kind: TriggerBinding params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
metadata: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
name: build-push-image-pipeline-binding params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
params: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: dockerfile-path params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
value: "./Dockerfile" params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: image-url params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
value: "yossicohn/app" params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
- name: path-to-context params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data" apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: build-push-image-pipeline-binding spec: params: - name: dockerfile-path value: "./Dockerfile" - name: image-url value: "yossicohn/app" - name: path-to-context value: "workspace/shared-data"
事件監聽器
這個EventListener具有基本結構,主要包括bindings 和template.
這binding定義哪個TriggerBinding用來。這template定義使用哪個TriggerTemplate。
在這個例子中,我們有額外的用法interceptor這是在我們自己的觸發器之前調用的觸發器。
有一些內置的攔截器,比如github可以使用的攔截器。這github攔截器有助於驗證Github secret令牌。如果攔截器失敗,則觸發器被阻止。
apiVersion: triggers.tekton.dev/v1alpha1 apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
kind: EventListener apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
metadata: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
name: build-push-image-tekton-trigger-listener apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
spec: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
serviceAccountName: service-tekton-triggers-sa apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
triggers: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
- name: github-listener apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
interceptors: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
- github: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
secretRef: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
secretName: github-secret apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
secretKey: secretToken apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
eventTypes: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
- pull_request apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
- push apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
bindings: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
- ref: build-push-image-pipeline-binding apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
template: apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: build-push-image-tekton-trigger-listener spec: serviceAccountName: service-tekton-triggers-sa triggers: - name: github-listener interceptors: - github: secretRef: secretName: github-secret secretKey: secretToken eventTypes: - pull_request - push bindings: - ref: build-push-image-pipeline-binding template: ref: build-push-image-template
請注意,我們在此處添加了用於驗證Github Secret 的密鑰
apiVersion: v1 apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
kind: Secret apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
metadata: apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
name: github-secret apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
annotations: apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
tekton.dev/git-0: github.com # Described below apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
type: Opaque apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
stringData: apiVersion: v1 kind: Secret metadata: name: github-secret annotations: tekton.dev/git-0: github.com # Described below type: Opaque stringData: secretToken: "yossi"
Tekton資源創建
為了使Tekton Trigger 流程正常工作,需要特定的憑據。例如:
「監聽事件」
「泰克頓資源創建」
這是通過我們創建的RBAC 規則實現的。
請注意,該
apiVersion: v1 kind: ServiceAccount metadata: name: service-tekton-triggers-sa --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: tekton-triggers-example-minimal rules: # EventListeners need to be able to fetch all namespaced resources - apiGroups: ["triggers.tekton.dev"] resources: ["eventlisteners", "triggerbindings", "triggertemplates", "triggers"] verbs: ["get", "list", "watch"] - apiGroups: [""] # configmaps is needed for updating logging config resources: ["configmaps"] verbs: ["get", "list", "watch"] # Permissions to create resources in associated TriggerTemplates - apiGroups: ["tekton.dev"] resources: ["pipelineruns", "pipelineresources", "taskruns"] verbs: ["create"] - apiGroups: [""] resources: ["serviceaccounts"] verbs: ["impersonate"] - apiGroups: ["policy"] resources: ["podsecuritypolicies"] resourceNames: ["tekton-triggers"] verbs: ["use"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: tekton-triggers-example-binding su bjects: - kind: ServiceAccount name: service-tekton-triggers-sa roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: tekton-triggers-example-minimal --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: tekton-triggers-example-clusterrole rules: # EventListeners need to be able to fetch any clustertriggerbindings - apiGroups: ["triggers.tekton.dev"] resources: ["clustertriggerbindings", "clusterinterceptors"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tekton-triggers-example-clusterbinding subjects: - kind: ServiceAccount name: service-tekton-triggers-sa namespace: default roleRef: apiGroup: rbac.authorization.k8s.iokind: ClusterRole name: tekton-triggers-example-clusterrole
運行
首先,我們需要安裝Tekton Pipelines, Tekton Triggers和Interceptors是我們的Kubernetes 集群。基本上,這是通過以下kubernetes 命令完成的。
你可以獲得更多訊息在這裡
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/interceptors.yaml
kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/interceptors.yaml
讓我們按以下方式應用所有新資源:
kubectl apply -f triggers/triggerbinding.yaml kubectl apply -f triggers/triggerbinding.yaml kubectl apply -f triggers/trigger-template.yaml kubectl apply -f triggers/rbac.yaml kubectl apply -f triggers/github-secret.yaml kubectl apply -f triggers/eventlistener.yaml
kubectl apply -f triggers/trigger-template.yaml kubectl apply -f triggers/triggerbinding.yaml kubectl apply -f triggers/trigger-template.yaml kubectl apply -f triggers/rbac.yaml kubectl apply -f triggers/github-secret.yaml kubectl apply -f triggers/eventlistener.yaml
kubectl apply -f triggers/rbac.yaml kubectl apply -f triggers/triggerbinding.yaml kubectl apply -f triggers/trigger-template.yaml kubectl apply -f triggers/rbac.yaml kubectl apply -f triggers/github-secret.yaml kubectl apply -f triggers/eventlistener.yaml
kubectl apply -f triggers/github-secret.yaml kubectl apply -f triggers/triggerbinding.yaml kubectl apply -f triggers/trigger-template.yaml kubectl apply -f triggers/rbac.yaml kubectl apply -f triggers/github-secret.yaml kubectl apply -f triggers/eventlistener.yaml
我們應該有一個新的服務:

暴露triggers端口
要將服務公開給GitHub,您應該使用IngressController。我正在使用Kong 。
要安裝kong,您可以使用Kong Helm Chart 和的Helm 值文件kong-values.yaml 觸發器文件夾中。安裝Kong 為:
helm install kong kong/kong -f kong-values.yaml
入口將通過以下入口資源公開
apiVersion: extensions/v1beta1 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
kind: Ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
metadata: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
name: el-build-push-image-listener-ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
annotations: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
kubernetes.io/ingress.class: kong apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
spec: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
rules: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
- host: trigger-example.com apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
http: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
paths: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
- path: /* apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
backend: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
serviceName: el-build-push-image-tekton-trigger-listener apiVersion: extensions/v1beta1 kind: Ingress metadata: name: el-build-push-image-listener-ingress annotations: kubernetes.io/ingress.class: kong spec: rules: - host: trigger-example.com http: paths: - path: /* backend: serviceName: el-build-push-image-tekton-trigger-listener servicePort: 8080
測試
我們可以通過一個簡單的方式觸發我們的Repo git push看看如何PipelineRun被建造。
作為建議,請嘗試:
移除GitHub 攔截器使用服務的端口轉發並從您的機器輕鬆調用它

安全方面
您應該注意,將公共端點公開到您的集群中會帶來問題。
對於Github Hooks,你可以做兩件主要的事情:
「IP白名單」
您可以將Github IP 列入白名單( Kong IP Restriction 插件可以提供幫助)
您可以在的Kong IP Restriction 的範例用法此處代碼範例中查看
Kong Helm Values 文件也可在的此處代碼範例中找到
「Github SecretToken」
你應該使用Github SecretToken與我使用攔截器的方式相同。更多關於Github SecretToken
https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks
概括
我們可以通過上面的範例看到,我們可以很容易地將觸發器利用到Tekton Pipelines 中,並在CI/CD 流中實現基本用例。