介绍

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

本文档适用对象

  • Cluster administrators 负责部署和维护 PAC component,将其暴露给 Git providers,并配置集群级设置。
  • Project users 创建 Repository resources,设置按 repository 或按 organization 的 Git 集成,并编写提交到 .tekton/ 下的 PipelineRuns。

Install 章节面向 administrator。GuidesHow To 章节面向用户。

核心能力

  • 按 repository 集成:通过单个 Repository Kubernetes resource 关联 Git URL,以及(在 Webhook 模式下)包含 access token 的 Secret。
  • Git 事件匹配: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 或其他 resolvers 拉取 tasks,而无需将它们打包到 repository 中。

工作原理

PAC 由三个 controller 侧组件和一个 Kubernetes resource 组成:

  1. Repository resource — 一个命名空间级的 pipelinesascode.tekton.dev/v1alpha1 resource,用于将 Git repository URL 绑定到其凭据(Webhook 模式)或完全不绑定任何凭据(GitHub App 模式,此时凭据为集群级)。
  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。

完整流程请参见 Core Concepts

使用 PAC 的前提条件

基础设施:

  • 已安装 Tekton Operator 的 Kubernetes cluster。
  • PAC component 已部署并暴露给 Internet,或暴露给承载 Git provider 的网络;请参见 Manage PAC Component
  • 对计划运行 pipeline 的 namespace 具有 kubectl 访问权限。

知识要求:

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

接下来去哪里