介绍
Pipelines-as-Code (PAC) 可让你将 Tekton pipeline 定义与应用代码放在同一个 Git repository 中,并在 Git event 匹配时自动执行这些定义。你无需在 cluster 中编辑 PipelineRuns,而是将它们提交到 .tekton/ 目录下;PAC 会在正确的 branch 上读取相应的 manifest,并为你创建 PipelineRun。
本文档适用对象
- 集群管理员 部署和维护 PAC 组件,将其暴露给 Git provider,并配置 cluster 级设置。
- 项目用户 创建
Repositoryresources,设置按 repository 或按 organization 的 Git 集成,并编写提交到.tekton/下的 PipelineRuns。
核心功能
- 按 repository 集成:通过单个
RepositoryKubernetes resource 关联 Git URL,以及(在 Webhook 模式下)包含 access token 的 Secret。 - Git event 匹配 — push、pull request / merge request、tag push、commit comment、issue comment。
- PipelineRun 选择:通过 PipelineRun manifest 上的 annotations(
on-event、on-target-branch、on-cel-expression、on-path-change等)。 - 状态回报:将状态回传给 Git provider,并以 GitHub Checks 或 commit statuses 的形式展示,同时提供返回 cluster 的链接。
- 基于评论的操作 —
/retest、/cancel,以及在 PipelineRun 上定义的自定义命令。 - GitHub 和 GitLab 集成 — 本文档涵盖 GitHub App、GitHub Webhook 和 GitLab Webhook 工作流。
- Resolver 集成 — 可从 Tekton Hub、远程 Git URLs 或其他 resolver 拉取 tasks,而无需将它们打包到 repository 中。
工作原理
PAC 由三个 controller 侧组件和一个 Kubernetes resource 组成:
- Repository resource — 一个有命名空间作用域的
pipelinesascode.tekton.dev/v1alpha1resource,用于将 Git repository URL 绑定到其凭据(Webhook 模式)或不绑定任何凭据(GitHub App 模式,此时凭据为 cluster 级)。 - PAC Webhook — Git provider 向其发送事件的 HTTP receiver。它使用与 provider 共享的
webhook.secret值验证签名。 - PAC Controller — 查找匹配的
Repository,从相关 ref 上的.tekton/获取 PipelineRun manifests,通过 annotation 语法进行筛选,并在Repository的 namespace 中创建PipelineRun。 - PAC Watcher — 观察
PipelineRun,并将完成状态(以及 provider 支持的中间步骤状态)回报给 Git provider。
完整流程请参见 核心概念。
使用 PAC 的先决条件
基础设施:
- 已安装 Tekton Operator 的 Kubernetes cluster。
- PAC 组件已部署并暴露到 Internet 或托管 Git provider 的网络中;请参见 管理 PAC 组件。
- 对你打算运行 pipelines 的 namespace 拥有
kubectl访问权限。
知识:
- Tekton 基础知识 —
Pipeline、PipelineRun、Task、TaskRun。 - Kubernetes 基础知识 — namespaces、Secrets、自定义 resources。
- 熟悉你将要集成的 Git provider,例如 GitHub 或 GitLab。
下一步去哪里
- 首次使用 — 从 快速开始 入手,查看端到端的最小示例。
- 搭建真实 repository — 从 指南 中选择对应的指南。
- 理解这些 resources — 阅读 核心概念。
- 组件部署 — 管理 PAC 组件。
- 故障排查 — 常见问题。
相关文档
- 在 Git 中定义 PipelineRuns — 在
.tekton/下定义并对 PipelineRuns 进行版本管理。 - 触发 PAC Pipelines — 自动 event 和评论命令。