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。例如:

cat <<EOF|kubectl create -n my-pipeline-ci -f- 
1


apiVersion: "pipelinesascode.tekton.dev/v1alpha1"
kind: Repository
metadata:
  name: project-repository
spec:
  url: "https://github.com/<repository>/<project>"
EOF
Copy to Clipboard Toggle word wrap
1
my-pipeline-ci 是目标命名空间。

每当有来自 URL(如 https://github.com/<repository>/<project>)的事件,Pipelines as Code 会匹配它并开始为管道运行签出 <repository>/<project> 存储库的内容以匹配 .tekton/ 目录中的内容。

注意
  • 您必须在与要执行的源代码存储库关联的管道所在的同一命名空间中创建 Repository CRD,它不能针对不同的命名空间。
  • 如果多个 Repository CRD 与同一事件匹配,Pipelines as Code 将只会处理最老的一个。如果您需要与特定命名空间匹配,请添加 pipelinesascode.tekton.dev/target-namespace: "<mynamespace>" 注解。通过这种显式目标,可防止恶意攻击者在其无法访问的命名空间中执行一个管道运行。

1.11.1. 设置并发限制

您可以使用 Repository 自定义资源定义 (CRD) 中的 concurrency_limit spec 来定义为存储库同时运行的最大管道运行数量。

apiVersion: "pipelinesascode.tekton.dev/v1alpha1"
kind: Repository
metadata:
  name: my-repo
  namespace: target-namespace
spec:
# ...
  concurrency_limit: <number>
# ...
Copy to Clipboard Toggle word wrap

如果有多个管道与事件匹配,管道会按照字母顺序与事件启动匹配。

例如,如果您在 .tekton 目录中有三个管道运行,并在存储库配置中创建了一个 concurrency_limit1 的拉取请求,则所有管道运行都会按字母顺序执行。在任意给定时间点,只有一个管道运行处于 running 状态,而其余会处于排队状态。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat