1.11. 在 Pipelines as Code 中使用 Repository CRD
Repository 自定义资源 (CR) 有以下主要功能:
- 告知 Pipelines as Code 关于处理来自一个 URL 事件的信息。
- 告知 Pipelines as Code 关于管道运行的命名空间信息。
- 使用 webhook 方法时,对于 Git 供应商平台需要需要引用 API secret、用户名或 API URL。
- 为存储库提供最后的管道运行状态。
您可以使用 tkn pac CLI 或其他替代方法在目标命名空间中创建 Repository CR。例如:
- 1
my-pipeline-ci是目标命名空间。
每当有来自 URL(如 https://github.com/<repository>/<project>)的事件,Pipelines as Code 会匹配它并开始为管道运行签出 <repository>/<project> 存储库的内容以匹配 .tekton/ 目录中的内容。
注意
-
您必须在与要执行的源代码存储库关联的管道所在的同一命名空间中创建
RepositoryCRD,它不能针对不同的命名空间。 -
如果多个
RepositoryCRD 与同一事件匹配,Pipelines as Code 将只会处理最老的一个。如果您需要与特定命名空间匹配,请添加pipelinesascode.tekton.dev/target-namespace: "<mynamespace>"注解。通过这种显式目标,可防止恶意攻击者在其无法访问的命名空间中执行一个管道运行。
1.11.1. 设置并发限制 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以使用 Repository 自定义资源定义 (CRD) 中的 concurrency_limit spec 来定义为存储库同时运行的最大管道运行数量。
如果有多个管道与事件匹配,管道会按照字母顺序与事件启动匹配。
例如,如果您在 .tekton 目录中有三个管道运行,并在存储库配置中创建了一个 concurrency_limit 为 1 的拉取请求,则所有管道运行都会按字母顺序执行。在任意给定时间点,只有一个管道运行处于 running 状态,而其余会处于排队状态。