第 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
目录。
流程
-
在
.tekton
目录中创建带有.yaml
或.yml
扩展名的文件。 -
在您创建的文件中,为
PipelineRun
CR 创建 YAML 规格。此规格可以使用 OpenShift Pipelines 的所有功能。 根据管道运行定义的要求,完成以下任何可选步骤:
-
在
.tekton
目录中创建带有.yaml
或.yml
扩展名的其他文件。在这些文件中,提供管道运行定义引用的资源定义,如Pipeline
、Task
或StepAction
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 解析器注解"部分。
-
在
通过将以下注解添加到管道运行定义中,将管道运行与事件匹配。当定义的事件发生时,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
,则该注解与管道运行匹配。
可选:添加过滤匹配事件的一个或多个注解。使用这些注解时,当定义的匹配事件(如拉取请求、推送事件或注释)发生时,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
注解会被匹配。
-
如果拉取请求或推送事件影响指定路径中的文件,则
-
可选:添加
pipelinesascode.tekton.dev/cancel-in-progress: "true"
注解,以启用自动取消管道运行。例如,如果拉取请求触发管道运行,然后用户将新提交推送到拉取请求源分支中,每个推送都会触发管道运行的新副本。如果您启用自动取消进行,在管道运行的新副本启动后,Pipelines as Code 会取消旧的运行,以避免同时运行管道运行的许多副本。有关此注解的更多信息,请参阅 "Annotations for specifying automaticcellation-in-progress for a pipeline run" 部分。
Pipelines as Code 管道运行定义示例
- 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 }}
动态变量替换为管道运行的分支的修订版本。