我正在学习Tekton (商业),来自github actions (私人)。
Tekton文档(或我能找到的任何其他教程)都有关于如何从github推送自动启动管道的说明。基本上,它们都遵循以下流程:(我知道管道the /TaskRun等)
Eventlistener - Trigger - TriggerTemplate - Pipeline所有上述步骤基本上都是您需要采取的配置步骤(以及创建和维护文件),其中一个步骤比另一个更容易,但据我所见,您维护的每个回购都需要执行这些步骤。与github操作相比,我只需要在回购中使用一个文件来描述我所需要的一切,这看起来非常复杂(如果不是麻烦的话)。
我漏掉了什么吗?还是说这就是该走的路?谢谢!
发布于 2022-01-01 14:32:28
也需要为你维护的每一次回购
你搞错了。
EventListener接收webhook的有效负载。
根据您的TriggerBinding,您可以将字段从GitHub有效负载映射到变量,如输入存储库名称/URL、分支或要使用的引用、.
对于GitHub push事件,一种方法是使用TriggerBinding,如下所示:
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
name: github-push
spec:
params:
- name: gitbranch
value: $(extensions.branch_name) # uses CEL interceptor, see EL below
- name: gitrevision
value: $(body.after) # uses body from webhook payload
- name: gitrepositoryname
value: $(body.repository.name)
- name: gitrepositoryurl
value: $(body.repository.clone_url)我们可以在TriggerTemplate中重用这些参数,将它们传递给管道/任务:
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
name: github-pipelinerun
spec:
params:
- name: gitbranch
- name: gitrevision
- name: gitrepositoryname
- name: gitrepositoryurl
resourcetemplates:
- apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: github-job-
spec:
params:
- name: identifier
value: "demo-$(tt.params.gitrevision)"
pipelineRef:
name: ci-docker-build
resources:
- name: app-git
resourceSpec:
type: git
params:
- name: revision
value: $(tt.params.gitrevision)
- name: url
value: $(tt.params.gitrepositoryurl)
- name: ci-image
resourceSpec:
type: image
params:
- name: url
value: registry.registry.svc.cluster.local:5000/ci/$(tt.params.gitrepositoryname):$(tt.params.gitrevision)
- name: target-image
resourceSpec:
type: image
params:
- name: url
value: registry.registry.svc.cluster.local:5000/ci/$(tt.params.gitrepositoryname):$(tt.params.gitbranch)
timeout: 2h0m0s使用以下EventListener:
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: github-listener
spec:
triggers:
- name: github-push-listener
interceptors:
- name: GitHub push payload check
github:
secretRef:
secretName: github-secret # a Secret you would create (option)
secretKey: secretToken # the secretToken in my Secret matches to secret configured in GitHub, for my webhook
eventTypes:
- push
- name: CEL extracts branch name
ref:
name: cel
params:
- name: overlays
value:
- key: truncated_sha
expression: "body.after.truncate(7)"
- key: branch_name
expression: "body.ref.split('/')[2]"
bindings:
- ref: github-push
template:
ref: github-pipelinerun现在,您可以公开该EventListener,并使用一个GitHub来接收来自您的任何GitHub存储库的通知。
https://stackoverflow.com/questions/70516349
复制相似问题