介绍
Target Audience
本档面向集群管理员和普通用户:
- 管理员:管理 PAC 组件的部署、配置和维护
- 普通用户:配置 Git 仓库并在代码中创建流水线
什么是 Pipelines as Code?
Pipelines-as-Code(PAC)是一个组件,允许您直接在源代码仓库中定义和管理 Tekton Pipeline 工作流。您无需在 Kubernetes 集群中维护流水线,而是可以:
- 将流水线定义与代码一起存储在 Git 中
- 对流水线配置进行版本控制
- 通过合并请求审查流水线更改
- 从 Git 事件(Pull Request、Merge Request 或 Push)自动触发流水线
- 将执行状态反馈回您的 Git 提供商
PAC 构建于 Tekton Pipeline 之上,利用其强大的流水线执行引擎,同时增加了 Git 集成功能。
平台支持
PAC 支持在 Kubernetes 平台上部署。尽管资源名称中包含“OpenShift”(出于历史原因),PAC 仍可通过 Tekton Operator 在标准 Kubernetes 集群上部署和使用。
前提条件
使用 PAC 需要:
基础设施要求:
- Kubernetes 集群(1.24 及以上)
- 已安装 Tekton Operator
- 具有管理员权限的 Git 仓库(用于配置 webhook)
- 已安装并配置 kubectl
- 带有 pac 插件的 tkn CLI(用于仓库配置)
知识要求:
- 基本的 Kubernetes 概念(Pods、Services、Namespaces、自定义资源)
- 基本的 Tekton 概念(Pipeline、PipelineRun、Task)
- 熟悉 Git 及 Git 提供商(GitHub、GitLab、Bitbucket)
详细前提条件请参见 快速开始。
核心功能
PAC 提供丰富的开箱即用功能,包括:
- 流水线状态跟踪:在处理 Pull Request 或 Merge Request 时跟踪并控制 Git 提供商中的流水线状态
- 事件支持:支持 Pull Request、Merge Request 和 Push 事件
- 评论命令:支持在 Pull Request 或 Merge Request 评论中使用命令,如
/retest重新运行测试 - 事件过滤:支持 Git 事件过滤,并为不同事件配置独立流水线
- 任务解析:自动解析流水线中的任务(包括本地任务、Tekton Hub 和远程 URL)
- CLI 工具:提供
tkn pacCLI 插件,用于管理 PAC Repository 资源和注册 webhook。安装和使用请参见 tkn pac 命令参考 - Git 提供商集成:全面支持多种 Git 提供商(GitHub、GitLab、Bitbucket Cloud、Bitbucket Data Center)、webhook 和状态报告
工作原理
PAC 通过以下核心组件协同工作:
- Repository CR(自定义资源):定义 Git 仓库与 PAC 控制器之间连接的 Kubernetes 自定义资源,存储仓库配置、Git 提供商凭据和 webhook 设置。
- PAC Webhook:接收来自 Git 提供商的 HTTP 请求(webhook)并验证 webhook 签名
- PAC Controller:处理来自 Git 提供商的 webhook 事件,从 Git 仓库获取流水线定义,并在 Kubernetes 中创建 PipelineRun 资源
- PAC Watcher:监控 PipelineRun 执行状态,并将结果反馈给 Git 提供商
组件流程
当发生 Git 事件(push、pull request、merge request)时:
- Git 提供商发送 webhook → PAC Webhook 接收并验证事件
- PAC Webhook 转发事件 → PAC Controller 处理事件
- PAC Controller 从 Git 获取流水线定义 → 在 Kubernetes 中创建 PipelineRun
- Tekton Pipeline 执行 PipelineRun
- PAC Watcher 监控执行 → 将状态反馈给 Git 提供商
更多详情请参见 核心概念。
使用场景
PAC 适用于以下场景:
-
基于代码的流水线管理
- 在源代码仓库中维护流水线定义
- 对流水线配置进行版本控制
- 通过合并请求审查流水线更改
-
CI/CD 自动化
- 在代码推送时自动触发流水线
- 在合并请求时运行测试
- 合并后部署应用
-
多仓库工作流
- 管理多个仓库的流水线
- 跨项目共享流水线模板
- 集中式流水线管理
主要优势
- 版本控制:流水线定义存储在 Git 中,实现版本控制和审查
- 开发人员友好:开发人员无需集群访问权限即可修改流水线
- 透明性:流水线更改在合并请求中可见
- 一致性:跨项目标准化流水线定义
- 灵活性:支持多种 Git 提供商(GitHub、GitLab、Bitbucket Cloud、Bitbucket Data Center)及多种事件类型
快速入门
如果您是 PAC 新手,请按照以下学习路径:
相关文档
- Pipeline As Code - Pipelines As Code 官方文档
- 维护流水线代码 - 在代码中定义和维护流水线
- 故障排除 - 常见问题及解决方案