5.3. Pipelines as Code 解析器注解


您可以使用 Pipelines as Code 解析器注解来引用 TaskPipeline 自定义资源(CR)定义。Pipelines as Code 解析器从注解中指定的位置获取定义。如果在获取远程任务或解析它们时出现错误,Pipelines as Code 将停止处理任务。

如果您在管道运行或 PipelineRunPipelineSpec 对象中引用远程任务,Pipelines as Code 解析器会自动解析引用的资源,并将其包含在生成的 PipelineRun 自定义资源(CR)中。

5.3.1. 远程任务注解

要包含远程任务,请参阅以下注解示例:

引用 Tekton Hub 中的远程任务

  • 在 Tekton Hub 中引用单个远程任务。

    Copy to Clipboard Toggle word wrap
    ...
      pipelinesascode.tekton.dev/task: "git-clone" 
    1
    
    ...
    1
    Pipelines as Code 包括来自 Tekton Hub 的任务的最新版本。
  • 引用 Tekton Hub 中的多个远程任务

    Copy to Clipboard Toggle word wrap
    ...
      pipelinesascode.tekton.dev/task: "[git-clone, golang-test, tkn]"
    ...
  • 使用 -<NUMBER> 后缀引用 Tekton Hub 中的多个远程任务。

    Copy to Clipboard Toggle word wrap
    ...
      pipelinesascode.tekton.dev/task: "git-clone"
      pipelinesascode.tekton.dev/task-1: "golang-test"
      pipelinesascode.tekton.dev/task-2: "tkn" 
    1
    
    ...
    1
    默认情况下,Pipelines as Code 会将字符串解析为从 Tekton Hub 获取最新的任务。
  • 引用 Tekton Hub 中的远程任务的特定版本。

    Copy to Clipboard Toggle word wrap
    ...
      pipelinesascode.tekton.dev/task: "[git-clone:0.1]" 
    1
    
    ...
    1
    引用 Tekton Hub 中的 git-clone 远程任务的 0.1 版本。

使用 URL 的远程任务

Copy to Clipboard Toggle word wrap
...
  pipelinesascode.tekton.dev/task: "<https://remote.url/task.yaml>" 
1

...

1
远程任务的公共 URL。
注意
  • 如果使用 GitHub,远程任务 URL 使用与 Repository 自定义资源定义 (CRD) 相同的主机,Pipelines as Code 会使用 GitHub 令牌并使用 GitHub API 获取 URL。

    例如,如果您有一个类似于 https://github.com/<organization>/<repository> 的存储库 URL,远程 HTTP URL 引用类似于 https://github.com/<organization>/<repository>/blob/<mainbranch>/<path>/<file > 的 GitHub blob,Pipelines as Code 会使用 GitHub App 令牌从该私有存储库中获取任务定义文件。

    当您使用公共 GitHub 存储库时,Pipelines as Code 的行为与 GitHub 原始 URL 类似,如 https://raw.githubusercontent.com/<organization>/<repository>/<mainbranch>/<path>/<file>

  • GitHub App 令牌的范围为所有者或存储库所在的机构。使用 GitHub Webhook 方法时,您可以在允许个人令牌的任何机构中获取任何私有或公共存储库。

从存储库内的 YAML 文件中引用任务

Copy to Clipboard Toggle word wrap
...
pipelinesascode.tekton.dev/task: "<share/tasks/git-clone.yaml>" 
1

...

1
到包含任务定义的本地文件的相对路径。

5.3.2. 远程管道注解

您可以使用远程管道注解在多个存储库间共享管道定义。

Copy to Clipboard Toggle word wrap
...
    pipelinesascode.tekton.dev/pipeline: "<https://git.provider/raw/pipeline.yaml>" 
1

...
1
远程管道定义的 URL。您还可以为同一存储库中的文件提供位置。
注意

您只能使用注解引用一个管道定义。

5.3.2.1. 覆盖远程管道中的任务

默认情况下,如果您在管道运行中使用远程管道注解,Pipelines as Code 会使用作为远程管道一部分的所有任务。

您可以通过在管道运行中添加任务注解来覆盖远程管道中的任务。添加的任务必须与远程管道中的任务的名称相同。

例如,您可以使用以下管道运行定义:

引用远程管道和覆盖任务的管道运行定义示例

Copy to Clipboard Toggle word wrap
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  annotations:
    pipelinesascode.tekton.dev/pipeline: "https://git.provider/raw/pipeline.yaml"
    pipelinesascode.tekton.dev/task: "./my-git-clone-task.yaml"

在本例中,假设位于 https://git.provider/raw/pipeline.yaml 的远程任务包括一个名为 git-clone 的任务,并且 my-git-clone-task.yaml 文件定义的任务也命名为 git-clone

在这种情况下,管道运行执行远程管道,但将管道中名为 git-clone 的任务替换为您定义的任务。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.