首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tekton - Github集成

Tekton - Github集成
EN

Stack Overflow用户
提问于 2020-12-18 08:07:36
回答 3查看 595关注 0票数 2

我正在寻找一种方法,如果存在的话,将运行在Kubernetes集群中的Tekton任务链接到GitHub步骤,这样我就可以在GitHub中标记所需的步骤,并且只有当它们经过时才允许PR合并。

我知道Tekton触发器,它解决了问题的另一部分,即响应GitHub中的事件,例如创建新的拉请求或主分支上的合并。但是Tekton能以我预期的方式调用GitHub API吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-28 12:44:12

您要寻找的是能够报告从PipelineRun到GitHub的状态的东西。

这可以通过几种不同的方式来完成。一种方法是使用提交--状态跟踪器,但是它似乎在PipelineResources中使用了“旧”概念,所以我建议使用例如GitHub应用程序说明器,尽管它看起来很新。

票数 0
EN

Stack Overflow用户

发布于 2021-11-29 14:23:15

另一种方法是使用泰克顿中心的任务,这很容易使用IMHO。集成GitLab,我们已经有了良好的经验,与相应的gitlab-set-状态.以下是一个全面的答案介绍如何根据Tekton管道聚合状态表达式保护的最后任务设置github-set-status任务的Tekton管道聚合状态

我还概述了一个示例pipeline.yaml,并从前面提到的答案(未经测试!)导出它。它利用git-clone和CloudNativebuildpacks任务(也来自Tekton )提供一个完整的示例:

代码语言:javascript
复制
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: buildpacks-test-pipeline
spec:
  params:
    - name: IMAGE
      type: string
      description: image URL to push
    - name: SOURCE_URL
      type: string
      description: A git repo url where the source code resides.
    - name: REPO_PATH_ONLY
      type: string
      description: GitHub group & repo name only (e.g. jonashackt/microservice-api-spring-boot)
    - name: SOURCE_REVISION
      description: The branch, tag or SHA to checkout.
      default: ""
    - name: GITHUB_HOST
      type: string
      description: Your GitHub host only (e.g. api.github.com)
    - name: TEKTON_DASHBOARD_HOST
      type: string
      description: The Tekton dashboard host name only

  workspaces:
    - name: source-workspace # Directory where application source is located. (REQUIRED)
    - name: cache-workspace # Directory where cache is stored (OPTIONAL)
  tasks:
    - name: fetch-repository # This task fetches a repository from github, using the `git-clone` task you installed
      taskRef:
        name: git-clone
      workspaces:
        - name: output
          workspace: source-workspace
      params:
        - name: url
          value: "$(params.SOURCE_URL)"
        - name: revision
          value: "$(params.SOURCE_REVISION)"
        - name: subdirectory
          value: ""
        - name: deleteExisting
          value: "true"
    - name: buildpacks # This task uses the `buildpacks` task to build the application
      taskRef:
        name: buildpacks
      runAfter:
        - fetch-repository
      workspaces:
        - name: source
          workspace: source-workspace
        - name: cache
          workspace: cache-workspace
      params:
        - name: APP_IMAGE
          value: "$(params.IMAGE)"
        - name: BUILDER_IMAGE
          value: paketobuildpacks/builder:base # This is the builder we want the task to use (REQUIRED)
  finally:
    - name: report-pipeline-failed-to-github
      when:
        - input: $(tasks.status)
          operator: in
          values: [ "Failed", "None" ] # see aggregated status https://tekton.dev/docs/pipelines/pipelines/#using-aggregate-execution-status-of-all-tasks
      taskRef:
        name: "github-set-status"
      params:
        - name: "STATE"
          value: "failed"
        - name: "GITHUB_HOST_URL"
          value: "$(params.GITHUB_HOST)"
        - name: "REPO_FULL_NAME"
          value: "$(params.REPO_PATH_ONLY)"
        - name: "GITHUB_TOKEN_SECRET_NAME"
          value: "github-api-secret"
        - name: "GITHUB_TOKEN_SECRET_KEY"
          value: "token"
        - name: "SHA"
          value: "$(params.SOURCE_REVISION)"
        - name: "TARGET_URL"
          value: "$(params.TEKTON_DASHBOARD_HOST)/#/namespaces/default/pipelineruns/$(context.pipelineRun.name)"
        - name: "CONTEXT"
          value: "tekton-pipeline"
        - name: "DESCRIPTION"
          value: "An error occurred building your commit in Tekton"
    - name: report-pipeline-success-to-github
      when:
          - input: $(tasks.status)
            operator: in
            values: [ "Succeeded", "Completed" ] # see aggregated status https://tekton.dev/docs/pipelines/pipelines/#using-aggregate-execution-status-of-all-tasks
      taskRef:
        name: "github-set-status"
      params:
        - name: "STATE"
          value: "success"
        - name: "GITHUB_HOST_URL"
          value: "$(params.GITHUB_HOST)"
        - name: "REPO_FULL_NAME"
          value: "$(params.REPO_PATH_ONLY)"
        - name: "GITHUB_TOKEN_SECRET_NAME"
          value: "github-api-secret"
        - name: "GITHUB_TOKEN_SECRET_KEY"
          value: "token"
        - name: "SHA"
          value: "$(params.SOURCE_REVISION)"
        - name: "TARGET_URL"
          value: "$(params.TEKTON_DASHBOARD_HOST)/#/namespaces/default/pipelineruns/$(context.pipelineRun.name)"
        - name: "CONTEXT"
          value: "tekton-pipeline"
        - name: "DESCRIPTION"
          value: "Finished building your commit in Tekton"
票数 0
EN

Stack Overflow用户

发布于 2022-04-22 07:19:45

我不确定TaskRuns,但您至少可以通过灯塔使用一个PipelineRun。

如果您打开了PR,它将重新选择PR中相应的PipelineRun的状态,并通知您管道和审批状态:

屏幕截图

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

https://stackoverflow.com/questions/65353580

复制
相关文章

相似问题

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