第 5 章 在 Pipelines as Code 中创建管道运行


将 Pipelines as Code 与存储库供应商集成,并使用 Repository 自定义资源(CR)定义特定存储库后,您可以在存储库中创建管道运行定义。

5.1. 在 Pipelines as Code 中创建管道运行

您可以在存储库中为 Pipelines 作为代码创建管道运行定义,并将其与事件(如拉取请求)匹配。当事件发生时,Pipelines as Code 从此定义创建一个 PipelineRun 自定义资源(CR),然后 OpenShift Pipelines 执行管道运行。

先决条件

  • 您已将 Pipelines 配置为与 Git 存储库托管服务提供商集成。
  • 您可以创建一个 Repository 自定义资源(CR)来定义 Pipelines 中与存储库的连接作为代码。
  • 在存储库的根目录中有一个 .tekton 目录。

流程

  1. .tekton 目录中创建带有 .yaml.yml 扩展名的文件。
  2. 在您创建的文件中,为 PipelineRun CR 创建 YAML 规格。此规格可以使用 OpenShift Pipelines 的所有功能。
  3. 根据管道运行定义的要求,完成以下任何可选步骤:

    • .tekton 目录中创建带有 .yaml.yml 扩展名的其他文件。在这些文件中,提供管道运行定义引用的资源定义,如 PipelineTaskStepAction CR。Pipelines as Code 解析器会自动解析这些资源,并将其包含在基于您的定义的 PipelineRun CR 中。
    • 在管道运行规格中 使用动态变量。Pipelines as Code 将这些变量替换为代表当前上下文的值。例如,{{ repo_url }} 是存储库的当前 URL,{{ revision }} 是管道运行的提交 SHA。

      有关动态变量的更多信息,请参阅管道运行规格中的"Dynamic 变量"。

    • 在管道运行定义中添加一个或多个 Pipelines as Code 解析器注解。Pipelines as Code 解析器注解引用 Tekton Hub、HTTP 位置或存储库之外的存储库中的管道 或任务。如果您创建一个 Pipelines as Code 解析器注解来引用资源,您可以在管道运行定义中按名称使用此资源。Pipelines as Code 解析器会自动解析这些资源,并将其包含在基于您的定义的 PipelineRun CR 中。

      有关这些注解的更多信息,请参阅"Pipelines as Code 解析器注解"部分。

  4. 通过将以下注解添加到管道运行定义中,将管道运行与事件匹配。当定义的事件发生时,Pipelines as Code 会启动管道运行。有关将管道运行与事件匹配的更多信息,请参阅 "Annotations for matching events to a pipeline run" 部分。

    • pipelinesascode.tekton.dev/on-event 注解的组合,它定义了 拉取请求推送事件,以及一个 pipelinesascode.tekton.dev/on-target-branch 注解,它定义了拉取请求或推送事件必须目标的分支。如果您将管道运行与拉取请求或推送事件匹配,则管道运行会在创建事件时启动。对于拉取请求,它会在每次更新源分支事件时再次启动。

      注意

      如果您的 Git 存储库供应商使用合并请求而不是拉取请求,pull_request 事件定义与合并请求匹配。

    • pipelinesascode.tekton.dev/on-comment 注解,它将管道运行与正则表达式上的注释匹配。如果您将管道运行与注释匹配,它会在将注释添加到拉取请求时启动。要再次启动管道运行,请再次添加注释。
    • pipelinesascode.tekton.dev/on-cel-expression 注解,如果指定的 Common Expression Language (CEL)表达式评估为 true,则该注解与管道运行匹配。
  5. 可选:添加过滤匹配事件的一个或多个注解。使用这些注解时,当定义的匹配事件(如拉取请求、推送事件或注释)发生时,Pipelines as Code 会检查这些注解是否也匹配。只有在您添加到它的所有注解都匹配时,才会启动管道运行。有关过滤匹配事件的更多信息,请参阅 "Annotations for filtering events" 部分。

    • 如果拉取请求或推送事件影响指定路径中的文件,则 pipelinesascode.tekton.dev/on-path-changed 注解会被匹配。
    • 如果事件 更改指定路径中的文件,且不会更改存储库中任何其他文件,则 pipelinesascode.tekton.dev/on-path-changed-ignore 注解会排除与事件匹配的事件。
    • 如果拉取请求或推送事件之一具有指定标签,则 pipelinesascode.tekton.dev/on-label 注解会被匹配。
  6. 可选:添加 pipelinesascode.tekton.dev/cancel-in-progress: "true" 注解,以启用自动取消管道运行。例如,如果拉取请求触发管道运行,然后用户将新提交推送到拉取请求源分支中,每个推送都会触发管道运行的新副本。如果您启用自动取消进行,在管道运行的新副本启动后,Pipelines as Code 会取消旧的运行,以避免同时运行管道运行的许多副本。有关此注解的更多信息,请参阅 "Annotations for specifying automaticcellation-in-progress for a pipeline run" 部分。

Pipelines as Code 管道运行定义示例

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: maven-build
annotations:
  pipelinesascode.tekton.dev/task: "[git-clone]" 
1

  pipelinesascode.tekton.dev/on-event: "[pull_request]" 
2

  pipelinesascode.tekton.dev/on-target-branch: "[main, release]" 
3

  pipelinesascode.tekton.dev/on-path-changed: "[src/**]" 
4

  pipelinesascode.tekton.dev/cancel-in-progress: "true" 
5

spec:
  pipelineSpec:
    workspaces:
    - name: shared-workspace
    tasks:
      - name: fetch-repo
        taskRef:
          - name: git-clone 
6

        params:
        - name: url
          value: {{ repo_url }} 
7

        - name: revision
          value: {{ revision }} 
8

        workspaces:
        - name: output
          workspace: shared-workspace
      - name: build-from-source
        taskRef:
          resolver: cluster
          params:
          - name: kind
            value: task
          - name: name
            value: maven
          - name: namespace
            value: openshift-pipelines
        workspaces:
        - name: source
          workspace: shared-workspace
Copy to Clipboard Toggle word wrap

1
pipelinesascode.tekton.dev/task 注解引用 Tekton Hub 中的 git-clone 任务。
2
pipelinesascode.tekton.dev/on-event 注解将管道运行与拉取请求或合并请求事件匹配。
3
pipelinesascode.tekton.dev/on-target-branch 注解指定拉取请求到 主分支发行版本 分支会触发此管道运行。
4
pipelinesascode.tekton.dev/on-path-changed 注解指定,只有在拉取请求包含 src 目录下文件更改时,管道运行才会触发。
5
pipelinesascode.tekton.dev/cancel-in-progress 注解指定,如果管道运行再次针对同一拉取请求启动,Pipelines as Code 会取消之前的运行。
6
管道运行规格按名称引用 git-clone 任务。由于 pipelinesascode.tekton.dev/task 注解,Pipelines as Code 解析器会解析对 Tekton Hub 中的 git-clone 任务的引用。
7
Pipelines as Code 将 {{ repo_url }} 动态变量替换为 Git 存储库的 URL。
8
Pipelines as Code 将 {{ revision }} 动态变量替换为管道运行的分支的修订版本。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat