3.6. 使用经过身份验证的 API 指定远程管道或任务


您可以使用 Git 解析器从 Git 存储库指定远程管道或任务。存储库必须包含定义管道或任务的 YAML 文件。您可以使用经过身份验证的 API 安全地访问存储库,它支持用户身份验证。

3.6.1. 为经过身份验证的 API 配置 Git 解析器

对于经过身份验证的 Source Control Management (SCM) API,您必须为经过身份验证的 Git 连接设置配置。

您可以使用 go-scm 库支持的 Git 存储库供应商。并非所有 go-scm 实现都已使用 Git 解析器测试,但以下供应商已知可以正常工作:

  • github.com 和 GitHub Enterprise
  • gitlab.com 和自托管的 Gitlab
  • Gitea
  • Bitbucket 服务器
  • Bitbucket 云
注意
  • 您可以使用经过身份验证的 SCM API 配置 Git 连接。您可以提供一个安全令牌,使集群中的所有用户能够访问一个存储库。另外,您可以为特定管道或任务指定不同的 SCM 供应商和令牌。
  • 如果将 Git 解析器配置为使用经过身份验证的 SCM API,您还可以使用匿名 Git 克隆引用来检索管道和任务。

流程

  1. 要编辑 TektonConfig 自定义资源,请输入以下命令:

    $ oc edit TektonConfig config
    Copy to Clipboard Toggle word wrap
  2. TektonConfig 自定义资源中,编辑 pipeline.git-resolver-config spec:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        git-resolver-config:
          default-revision: main 
    1
    
          fetch-timeout: 1m 
    2
    
          scm-type: github 
    3
    
          server-url: api.internal-github.com 
    4
    
          api-token-secret-name: github-auth-secret 
    5
    
          api-token-secret-key: github-auth-key 
    6
    
          api-token-secret-namespace: github-auth-namespace 
    7
    
          default-org: tektoncd 
    8
    Copy to Clipboard Toggle word wrap
    1
    如果未指定,使用默认 Git 修订。
    2
    单个 Git 克隆解析可能需要的最大时间,如 1m2s700ms。Red Hat OpenShift Pipelines 还在所有解析请求中强制实施全局最大超时时间为 1 分钟。
    3
    SCM 提供程序类型。
    4
    用于经过身份验证的 SCM API 的基本 URL。如果您使用 github.comgitlab.com 或 BitBucket Cloud,则不需要此设置。
    5
    包含 SCM 提供程序 API 令牌的 secret 名称。
    6
    包含令牌的令牌 secret 中的密钥。
    7
    包含令牌 secret 的命名空间(如果不是 default)。
    8
    可选:使用经过身份验证的 API 时存储库的默认机构。如果您没有在解析器参数中指定机构,则使用此机构。
注意

使用经过身份验证的 SCM API 需要 scm-type,api-token-secret-name, 和 api-token-secret-key 设置。

在创建管道运行时,您可以使用经过身份验证的 SCM API 从 Git 存储库指定远程管道。在创建管道或任务运行时,您可以从 Git 仓库指定远程任务。

先决条件

  • 如果要使用经过身份验证的 SCM API,您必须为 Git 解析器配置经过身份验证的 Git 连接。

流程

  1. 要从 Git 仓库指定远程管道或任务,请在 pipelineReftaskRef spec 中使用以下引用格式:

    # ...
      resolver: git
      params:
      - name: org
        value: <git_organization_name>
      - name: repo
        value: <git_repository_name>
      - name: revision
        value: <branch_name>
      - name: pathInRepo
        value: <path_in_repository>
    # ...
    Copy to Clipboard Toggle word wrap
    Expand
    表 3.49. Git 解析器支持的参数
    参数描述示例值

    org

    使用经过身份验证的 SCM API 时存储库的机构。

    tektoncd

    repo

    使用经过身份验证的 SCM API 时的存储库名称。

    test-infra

    revision

    存储库中的 Git 修订。您可以指定分支名称、标签名称或提交 SHA 哈希。

    aeb957601cf41c012be462827053a21a420befca
    main
    v0.38.2

    pathInRepo

    存储库中的 YAML 文件的路径名称。

    task/golang-build/0.3/golang-build.yaml

    注意

    要匿名克隆和获取存储库,请使用 url 参数。要使用经过身份验证的 SCM API,请使用 repo 参数。不要同时指定 url 参数和 repo 参数。

    如果管道或任务需要额外的参数,在管道、管道运行或任务运行规格的 params 部分中指定这些参数的值。pipelineReftaskRef 规格的 params 部分必须包含解析器支持的参数。

以下示例管道运行引用 Git 存储库中的远程管道:

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: git-pipeline-reference-demo
spec:
  pipelineRef:
    resolver: git
    params:
    - name: org
      value: tektoncd
    - name: repo
      value: catalog
    - name: revision
      value: main
    - name: pathInRepo
      value: pipeline/simple/0.1/simple.yaml
  params:
  - name: name
    value: "testPipelineRun"
  - name: sample-pipeline-parameter
    value: test
Copy to Clipboard Toggle word wrap

以下示例管道引用 Git 存储库中的远程任务:

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: pipeline-with-git-task-reference-demo
spec:
  tasks:
  - name: "git-task-reference-demo"
    taskRef:
      resolver: git
      params:
      - name: org
        value: tektoncd
      - name: repo
        value: catalog
      - name: revision
        value: main
      - name: pathInRepo
        value: task/git-clone/0.6/git-clone.yaml
    params:
    - name: sample-task-parameter
      value: test
Copy to Clipboard Toggle word wrap

以下示例任务运行引用 Git 存储库中的远程任务:

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  name: git-task-reference-demo
spec:
  taskRef:
    resolver: git
    params:
    - name: org
      value: tektoncd
    - name: repo
      value: catalog
    - name: revision
      value: main
    - name: pathInRepo
      value: task/git-clone/0.6/git-clone.yaml
  params:
  - name: sample-task-parameter
    value: test
Copy to Clipboard Toggle word wrap

在创建管道运行时,您可以使用经过身份验证的 SCM API 从 Git 存储库指定远程管道。在创建管道或任务运行时,您可以从 Git 仓库指定远程任务。您可以覆盖特定管道运行或任务中的初始配置设置,以根据不同的用例自定义行为。

以下示例任务运行引用 Git 存储库中的远程任务来覆盖之前的解析器配置:

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: git-task-reference-demo
spec:
  taskRef:
    resolver: git
    params:
    - name: org
      value: tektoncd
    - name: repo
      value: catalog
    - name: revision
      value: main
    - name: pathInRepo
      value: task/git-clone/0.6/git-clone.yaml
    - name: token
      value: my-secret-token
    - name: tokenKey
      value: token
    - name: scmType
      value: github
    - name: serverURL
      value: https://ghe.mycompany.com
Copy to Clipboard Toggle word wrap
Expand
表 3.50. 覆盖 Git 解析器支持的参数
参数描述示例值

org

仓库的组织。

tektoncd

repo

存储库名称。

catalog

revision

存储库中的 Git 修订。您可以指定分支名称、标签名称或提交 SHA 哈希。

main

pathInRepo

存储库中的 YAML 文件的路径名称。

task/git-clone/0.6/git-clone.yaml

token

用于身份验证的 secret 名称。

my-secret-token

tokenKey

令牌的密钥名称。

token

scmType

SCM (源控制管理)系统的类型。

github

serverURL

托管存储库的服务器的 URL。

https://ghe.mycompany.com

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat