触发 PAC Pipelines

面向普通用户

本页说明在仓库连接后,PAC 如何启动 PipelineRuns。要定义 PAC 选择的 .tekton/ 文件,请参阅 在 Git 中定义 PipelineRun。

PAC 通过两种方式触发 pipelines:

  • 自动事件触发:Git provider 发送 webhook 事件,PAC 将这些事件与 PipelineRun 文件上的注解进行匹配。
  • 评论命令触发:经授权的用户在评论中使用 PAC 命令,例如 /test、/retest 或 /cancel。

自动事件触发

自动触发由 .tekton/ 下每个 PipelineRun 中的注解控制。PAC 从触发事件的 Git ref 读取 PipelineRun 定义,匹配这些注解,替换 PAC 变量,并在 Repository 命名空间中创建匹配的 PipelineRuns。

下表说明应使用哪种事件源。有关准确的注解语法和示例,请参阅 触发事件。

事件源PAC 事件匹配条件
分支 pushpush被 push 的分支与 PipelineRun 的分支过滤器匹配。
Tag pushpushtag ref 与 PipelineRun 的 tag 过滤器匹配。
Pull Request / Merge Requestpull_requestPR/MR 的基准分支与 PipelineRun 的分支过滤器匹配。
Label 更新pull_requestPR/MR 具有匹配的 label 条件。
自定义 PR/MR 评论on-comment新的 PR/MR 评论与 PipelineRun 评论正则表达式匹配。

对于诸如 /deploy-preview 之类的仓库特定命令,请使用自定义评论触发器。当你希望使用 PAC 原生的 rerun、test、cancel 或 approval 行为时,请使用下面的内置 PAC 命令。

有关更多匹配选项,请参阅 Pipelines as Code 事件匹配文档。

评论命令触发

PAC 还会识别评论中的内置 GitOps 命令。当你想要在不推送新的 commit 的情况下运行、重跑、批准或取消 pipelines 时,这些命令非常有用。

用于 Pull Request 和 Merge Request 的命令

在打开的 PR 或 MR 上使用这些命令:

命令作用
/test运行当前 PR 或 MR 的所有匹配 PipelineRuns。
/test <pipelinerun>仅运行指定名称的 PipelineRun。
/retest重新运行同一 commit 上尚未成功的匹配 PipelineRuns。
/retest <pipelinerun>仅重新运行指定名称的 PipelineRun。
/cancel取消与该 PR 或 MR 关联的正在运行的 PipelineRuns。
/cancel <pipelinerun>仅取消指定名称的 PipelineRun。
/ok-to-test当策略要求批准时,允许 PAC 为外部或其他不受信任的贡献运行 CI。
/ok-to-test <sha>与 /ok-to-test 相同,但在 PAC 配置要求时会进行显式 SHA 验证。

<pipelinerun> 是 .tekton/ 文件中的 metadata.name 或 metadata.generateName 值,而不是生成的运行时名称。例如,如果文件包含 generateName: sv-event-pr-,请使用:

/test sv-event-pr-

用于 Commit 评论的命令

GitHub 和 GitLab 支持在添加到已 push 分支 commit 的评论中使用 /test、/retest 和 /cancel。/ok-to-test 用于 PR/MR 授权,不适用于已 push 的 commit。

当你在 commit 上评论时,PAC 必须知道应使用哪个分支或 tag 上下文。如果你未指定,PAC 将使用仓库默认分支。被评论的 commit 必须是该分支的 HEAD commit,或者是 tag 指向的 commit。

当 commit 属于非默认分支时,使用 branch:<branch>:

/test <pipelinerun> branch:<branch>

当命令应在 tag 上下文中运行时,使用 tag:<tag>。目前仅 GitHub App 和 GitHub webhook 集成支持 tag 评论命令:

/test <pipelinerun> tag:<tag>

/retest 和 /cancel 也接受相同的 branch 参数。在受支持的 GitHub tag 评论中,也接受 tag 参数:

/retest <pipelinerun> branch:<branch>
/cancel <pipelinerun> branch:<branch>

在命令中传递参数

内置命令可以包含 key=value 参数。PAC 会从评论中解析这些参数,并可将其用于覆盖定义在 Repository.spec.params 中的自定义参数或受支持的标准变量:

/test <pipelinerun> environment=staging
/test <pipelinerun> message="run smoke tests"

仅会应用已为 Repository 定义或被 PAC 识别的参数。任意键都会被忽略。

Provider 说明

区域GitHubGitLab
PR/MR eventPull Request events 映射到 pull_request。Merge Request events 映射到 pull_request。
PR/MR 评论内置命令和 on-comment 适用于打开的 Pull Request。内置命令和 on-comment 适用于打开的 Merge Request。
Commit 评论/test、/retest 和 /cancel 适用于 commit 评论。/test、/retest 和 /cancel 适用于 commit 评论。
Tag 评论命令使用 GitHub App 和 webhook 集成时支持 tag:<tag>。不支持 tag:<tag>。
/ok-to-test <sha>当 PAC 配置要求时,会使用 SHA 验证。该命令支持用于 MR 授权;SHA 验证是 GitHub 特有的安全保护措施。

有关更多命令详情,请参阅 Pipelines as Code GitOps 命令文档。

验证触发

发送事件或评论后,请检查定义 Repository CR 的命名空间中的 PipelineRuns:

kubectl get pipelineruns -n <namespace>

如果没有创建 PipelineRun,请检查事件注解和 PAC controller 日志:

kubectl logs -n <pac-namespace> -l app=pipelines-as-code-controller --tail=100

常见检查项:

症状检查内容
push 后没有运行文件位于 .tekton/ 下,on-event 包含 push,且 on-target-branch 与被 push 的 ref 匹配。
PR 或 MR 更新后没有运行on-event 包含 pull_request,且 on-target-branch 与 PR/MR 的基准分支匹配。
/test <pipelinerun> 不匹配使用 .tekton/ 文件中的 name 或 generateName,而不是生成的运行时 PipelineRun 名称。
Commit 评论不运行被评论的 commit 是所选 branch: 的 HEAD,或是 tag: 指向的 commit。
on-comment 不运行新评论在去除首尾空格后与正则表达式匹配。

下一步