Tekton Pipelines 入門第2 部分— 觸發器

blank

Tekton Pipelines 入門第2 部分— 觸發器

「【只做懂你de雲原生乾貨知識共享】」

blank

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)

blank

來自: : 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 和任選的攔截器

blank

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

我們應該有一個新的服務:

blank

暴露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 攔截器使用服務的端口轉發並從您的機器輕鬆調用它

blank

安全方面

您應該注意,將公共端點公開到您的集群中會帶來問題。

對於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 流中實現基本用例。

What do you think?

Written by marketer

blank

外貿小公司、小工廠如何接外貿訂單?

blank

搜索引擎對於SEO來說是敵是友?