第 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扩展名的文件。
- 
						在您创建的文件中,为 PipelineRunCR 创建 YAML 规格。此规格可以使用 OpenShift Pipelines 的所有功能。
- 根据管道运行定义的要求,完成以下任何可选步骤: - 
								在 .tekton目录中创建带有.yaml或.yml扩展名的其他文件。在这些文件中,提供管道运行定义引用的资源定义,如Pipeline、Task或StepActionCR。Pipelines as Code 解析器会自动解析这些资源,并将其包含在基于您的定义的PipelineRunCR 中。
- 在管道运行规格中 使用动态变量。Pipelines as Code 将这些变量替换为代表当前上下文的值。例如, - {{ repo_url }}是存储库的当前 URL,- {{ revision }}是管道运行的提交 SHA。- 有关动态变量的更多信息,请参阅管道运行规格中的"Dynamic 变量"。 
- 在管道运行定义中添加一个或多个 Pipelines as Code 解析器注解。Pipelines as Code 解析器注解引用 Tekton Hub、HTTP 位置或存储库之外的存储库中的管道 - 或任务。如果您创建一个 Pipelines as Code 解析器注解来引用资源,您可以在管道运行定义中按名称使用此资源。Pipelines as Code 解析器会自动解析这些资源,并将其包含在基于您的定义的- PipelineRunCR 中。- 有关这些注解的更多信息,请参阅"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 }}动态变量替换为管道运行的分支的修订版本。