介绍

Pipelines-as-Code (PAC) 可让你将 Tekton pipeline 定义与应用代码放在同一个 Git repository 中,并在 Git event 匹配时自动执行这些定义。你无需在 cluster 中编辑 PipelineRuns,而是将它们提交到 .tekton/ 目录下;PAC 会在正确的 branch 上读取相应的 manifest,并为你创建 PipelineRun。

本文档适用对象

  • 集群管理员 部署和维护 PAC 组件,将其暴露给 Git provider,并配置 cluster 级设置。
  • 项目用户 创建 Repository resources,设置按 repository 或按 organization 的 Git 集成,并编写提交到 .tekton/ 下的 PipelineRuns。

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

核心功能

  • 按 repository 集成:通过单个 Repository Kubernetes 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-eventon-target-branchon-cel-expressionon-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 组成:

  1. Repository resource — 一个有命名空间作用域的 pipelinesascode.tekton.dev/v1alpha1 resource,用于将 Git repository URL 绑定到其凭据(Webhook 模式)或不绑定任何凭据(GitHub App 模式,此时凭据为 cluster 级)。
  2. PAC Webhook — Git provider 向其发送事件的 HTTP receiver。它使用与 provider 共享的 webhook.secret 值验证签名。
  3. PAC Controller — 查找匹配的 Repository,从相关 ref 上的 .tekton/ 获取 PipelineRun manifests,通过 annotation 语法进行筛选,并在 Repository 的 namespace 中创建 PipelineRun
  4. PAC Watcher — 观察 PipelineRun,并将完成状态(以及 provider 支持的中间步骤状态)回报给 Git provider。

完整流程请参见 核心概念

使用 PAC 的先决条件

基础设施:

  • 已安装 Tekton Operator 的 Kubernetes cluster。
  • PAC 组件已部署并暴露到 Internet 或托管 Git provider 的网络中;请参见 管理 PAC 组件
  • 对你打算运行 pipelines 的 namespace 拥有 kubectl 访问权限。

知识:

  • Tekton 基础知识 — PipelinePipelineRunTaskTaskRun
  • Kubernetes 基础知识 — namespaces、Secrets、自定义 resources。
  • 熟悉你将要集成的 Git provider,例如 GitHub 或 GitLab。

下一步去哪里