首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自github的Tekton触发流

来自github的Tekton触发流
EN

Stack Overflow用户
提问于 2021-12-29 07:27:11
回答 1查看 455关注 0票数 1

我正在学习Tekton (商业),来自github actions (私人)。

Tekton文档(或我能找到的任何其他教程)都有关于如何从github推送自动启动管道的说明。基本上,它们都遵循以下流程:(我知道管道the /TaskRun等)

代码语言:javascript
复制
Eventlistener - Trigger - TriggerTemplate - Pipeline

所有上述步骤基本上都是您需要采取的配置步骤(以及创建和维护文件),其中一个步骤比另一个更容易,但据我所见,您维护的每个回购都需要执行这些步骤。与github操作相比,我只需要在回购中使用一个文件来描述我所需要的一切,这看起来非常复杂(如果不是麻烦的话)。

我漏掉了什么吗?还是说这就是该走的路?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-01 14:32:28

也需要为你维护的每一次回购

你搞错了。

EventListener接收webhook的有效负载。

根据您的TriggerBinding,您可以将字段从GitHub有效负载映射到变量,如输入存储库名称/URL、分支或要使用的引用、.

对于GitHub push事件,一种方法是使用TriggerBinding,如下所示:

代码语言:javascript
复制
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中重用这些参数,将它们传递给管道/任务:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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存储库的通知。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70516349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档