介绍

Pipelines-as-Code (PAC) 可让你将 Tekton pipeline 定义与应用程序代码放在一起,位于同一个 Git 仓库中,并在匹配到 Git 事件时自动执行。你无需在集群中编辑 PipelineRun,而是将它们提交到 .tekton/ 目录下;PAC 会读取相应分支上的正确清单,并为你创建 PipelineRun。

本文档适用对象

  • 集群管理员 部署并维护 PAC 组件,将其暴露给 Git 提供商,并配置集群级设置。
  • 项目用户 创建 Repository 资源,设置按仓库或按组织的 Git 集成,并编写提交到 .tekton/ 下的 PipelineRun。

安装 章节面向管理员。指南 和 操作方法 章节面向用户。

核心功能

  • 按仓库集成,通过单个 Repository Kubernetes 资源实现,该资源引用 Git URL 以及(在 Webhook 模式下)包含访问令牌的 Secret。
  • Git 事件匹配 — push、pull request / merge request、tag push、commit comment、issue comment。
  • PipelineRun 选择,通过 PipelineRun 清单上的注解(on-event、on-target-branch、on-cel-expression、on-path-change 等)实现。
  • 状态报告 回传给 Git 提供商,并以 GitHub Checks 或 commit statuses 的形式展示,同时附带返回集群的链接。
  • 基于评论的操作 — /retest、/cancel,以及在 PipelineRun 上定义的自定义命令。
  • GitHub 和 GitLab 集成 — 本文档涵盖 GitHub App、GitHub Webhook 和 GitLab Webhook 工作流。
  • Resolver 集成 — 可从由 artifacthub-shim 提供的 DevOps Hub catalog、远程 Git URL 或其他 resolver 拉取 task,而无需将它们打包到仓库中。

工作原理

PAC 由三个控制器侧组件和一个 Kubernetes 资源组成:

  1. Repository resource — 命名空间级别的 pipelinesascode.tekton.dev/v1alpha1 资源,它将 Git 仓库 URL 绑定到其凭据(Webhook 模式)或完全不绑定凭据(GitHub App 模式,其中凭据为集群级)。
  2. PAC Webhook — Git 提供商向其发送事件的 HTTP 接收端。它使用与提供商共享的 webhook.secret 值验证签名。
  3. PAC Controller — 查找匹配的 Repository,从相关 ref 的 .tekton/ 中获取 PipelineRun 清单,通过注解语法对其进行过滤,并在 Repository 的命名空间中创建 PipelineRun。
  4. PAC Watcher — 监视 PipelineRun,并将完成状态(以及提供商支持时的中间步骤状态)回报给 Git 提供商。

完整流程请参阅 核心概念。

使用 PAC 的前提条件

基础设施:

  • 已安装 Tekton Operator 的 Kubernetes 集群。
  • PAC 组件已部署并暴露到 Internet 或托管 Git 提供商的网络中;请参阅 管理 PAC 组件。
  • 对你计划运行 pipeline 的命名空间具有 kubectl 访问权限。

知识:

  • Tekton 基础知识 — Pipeline、PipelineRun、Task、TaskRun。
  • Kubernetes 基础知识 — 命名空间、Secrets、自定义资源。
  • 熟悉你将集成的 Git 提供商,例如 GitHub 或 GitLab。

下一步去哪里