Advanced Repository Configuration
本指南适用于需要高级 Repository CR 配置的普通用户,例如并发限制、源分支设置和自定义参数扩展。
本指南介绍 Repository Custom Resources 的高级配置选项,包括:
- 全局 Repository CR 用于自动配置继承(技术预览)
- 并发限制
- 源分支配置
- 自定义参数扩展
目录
前提条件创建全局 Repository CR示例:全局 Repository CR示例:使用全局设置设置并发限制配置并发限制示例用例验证并发限制更改 Pipeline 定义的源分支配置 PipelineRun 定义源安全性优势配置对比自定义参数扩展定义自定义参数在管道中使用自定义参数参数优先级示例:环境特定配置组合高级功能最佳实践1. 并发限制2. 源分支配置3. 自定义参数故障排查并发限制不起作用参数未展开后续步骤前提条件
- 已部署并运行 PAC 组件
- 已创建 Repository CR(参见 Configure Repository)
- 具备集群管理员或命名空间级权限
创建全局 Repository CR
全局 Repository CR 功能为技术预览功能,提供所有 Repository CR 的自动配置继承。
或者,您可以在 PAC 安装的命名空间(通常是 tekton-pipelines,或通过 OpenShiftPipelinesAsCode CR 中的 targetNamespace 配置)中创建一个全局 Repository CR。如果您在该命名空间中创建一个名为 pipelines-as-code 的 Repository CR,则其中指定的设置将自动应用于您创建的所有 Repository CR。
关键点:
- 名称:必须精确为
pipelines-as-code - 命名空间:必须在 PAC 安装命名空间(例如
tekton-pipelines) - 自动应用:设置自动应用于所有 Repository CR
- 技术预览:此功能为技术预览
示例:全局 Repository CR
在 PAC 命名空间创建全局 Repository CR:
应用该 CR:
行为:
- 您创建的所有 Repository CR 都将继承这些
git_provider设置 - 单个 Repository CR 可根据需要覆盖这些设置
- 每个 Repository CR 仍需指定
url及其他仓库特定设置
示例:使用全局设置
使用上述全局 CR,您可以创建配置最简的单个 Repository CR:
设置并发限制
并发限制有助于防止大量事件同时触发管道时资源耗尽。您可以设置一个仓库允许的最大并发 PipelineRun 数量。
配置并发限制
编辑您的 Repository CR,添加 concurrency_limit 字段:
重要说明:
- 最小值为
1 - 未指定时,默认无限制并发 PipelineRun
- 达到限制时,新事件将排队等待已有 PipelineRun 完成
示例用例
高流量仓库:限制并发运行数以防集群过载:
资源密集型管道:限制并发以保证每次运行有足够资源:
无限制(默认):允许无限并发运行:
验证并发限制
查看 Repository CR:
示例输出(简略):
监控正在运行的 PipelineRun:
示例输出:
更改 Pipeline 定义的源分支
默认情况下,Pipelines-as-Code 会从触发事件的分支(例如 push 或 pull request 的分支)拉取 PipelineRun 定义。
您可以通过 Repository CR 中的 spec.settings.pipelinerun_provenance 字段更改此行为。该设置控制 PipelineRun 定义从哪个分支拉取。
配置 PipelineRun 定义源
pipelinerun_provenance 支持的值:
source:默认行为。PipelineRun 定义从触发事件的分支拉取。default_branch:PipelineRun 定义从 Git 提供者配置的仓库默认分支拉取(例如main、master或trunk)。
安全性优势
允许用户指定 PipelineRun 定义来源为默认分支,是另一层安全保障。它确保只有有权合并提交到默认分支的用户,才能更改 PipelineRun 定义并访问基础设施。
- 防止恶意管道更改:管道定义必须合并到默认分支后才能执行。
- 强制审查流程:所有管道更改都经过标准合并/审查流程。
- 管道行为一致:所有运行均使用默认分支的相同管道定义。
配置对比
注意:根据 Red Hat OpenShift Pipelines 文档,推荐使用 default_branch 设置作为安全措施,以确保在合并审查过程中最大程度验证管道更改。
自定义参数扩展
您可以在 Repository CR 中定义自定义参数,这些参数将在该仓库创建的所有 PipelineRun 中展开。此功能适用于为所有管道设置通用值。
定义自定义参数
在 Repository CR 的 spec.params 字段添加参数:
在管道中使用自定义参数
重要:Repository CR 参数使用 PAC 变量语法 {{ param }},而非 Tekton 的 $(params.param) 语法。
-
PAC 变量(
{{ variable }}):PAC 在创建 PipelineRun 之前替换这些变量,包括:- Repository CR 中
spec.params的参数(如{{ environment }}、{{ cluster-name }}) - PAC 内置变量(如
{{ revision }}、{{ repo_url }}、{{ source_branch }})
- Repository CR 中
-
Tekton 参数(
$(params.param)):Tekton 在 PipelineRun 执行时解析,引用 PipelineRun 自身的spec.params。
在 PipelineRun 定义中使用 PAC 变量语法引用 Repository CR 参数:
工作原理:
- PipelineRun 创建前:PAC 替换所有
{{ variable }}语法为 Repository CR 参数和内置变量的实际值 - PipelineRun 创建时:PAC 创建的 PipelineRun 中所有变量已被替换
- 执行时:Tekton 解析
$(params.xxx)语法,从 PipelineRun 的spec.params中读取值
示例转换:
- Git 仓库中:
value: "{{ environment }}" - PAC 替换为:
value: "production"(来自 Repository CR 参数) - 创建的 PipelineRun 中为:
- name: environment/value: "production" - 任务脚本中使用:
$(params.environment)→ Tekton 解析为"production"
参数优先级
参数展开顺序(优先级从高到低):
- PipelineRun 参数:PipelineRun 中显式定义的参数
- Repository 参数:Repository CR 中定义的参数
- 动态变量:PAC 动态变量(如
{{ revision }}、{{ repo_url }})
示例:环境特定配置
使用 Repository 参数配置不同环境:
生产环境仓库:
预发布环境仓库:
两个仓库均可使用相同的管道定义,参数由 Repository CR 自动填充。
组合高级功能
您可以在单个 Repository CR 中组合所有高级功能:
最佳实践
1. 并发限制
- 设置合适限制:根据集群资源和管道资源需求调整
- 监控使用情况:观察事件排队情况,避免限制过低
- 动态调整:高流量时增加限制,节省资源时减少限制
2. 源分支配置
- 使用稳定分支:从稳定分支(如
main)拉取管道定义 - 测试管道更改:在功能分支测试管道更改后再合并到源分支
- 文档说明:清晰记录管道定义所在分支
3. 自定义参数
- 使用有意义名称:选择清晰、描述性的参数名
- 保持值简单:参数值使用简单字符串
- 文档说明:记录每个参数的作用及使用场景
- 避免存储密钥:不要在 Repository 参数中存储密钥,使用 Kubernetes Secret
故障排查
并发限制不起作用
-
确认限制已设置:
示例输出:
-
检查是否有事件排队:查看是否有事件等待 PipelineRun 完成
-
查看 PAC 控制器日志:
示例输出:
参数未展开
-
确认参数已定义:
-
检查参数语法:确保使用的是
{{ param }}语法引用 Repository CR 参数,而非$(params.param) -
验证变量替换:查看创建的 PipelineRun 是否被 PAC 替换变量:
-
检查 PipelineRun:确认参数未被 PipelineRun 定义覆盖
后续步骤
- Configure Repository - 基础仓库设置
- Maintain Pipeline Code - 管道定义指南
- Manage PipelineRuns - PipelineRun 管理
- Common Issues - 故障排查指南