触发 PAC Pipelines

适用于普通用户

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

PAC 通过两种方式触发 pipeline:

  • 自动事件触发器:Git provider 发送 webhook 事件,PAC 将这些事件与 PipelineRun 文件上的注解进行匹配。
  • 评论命令触发器:授权用户通过评论输入 PAC 命令,例如 /test/retest/cancel

自动事件触发器

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

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

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

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

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

评论命令触发器

PAC 还会识别评论中的内置 GitOps 命令。这些命令适用于在不推送另一个 commit 的情况下运行、重新运行、批准或取消 pipeline。

Pull Request 和 Merge Request 上的命令

在打开的 PR 或 MR 上使用以下命令:

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

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

/test sv-event-pr-

Commit 评论上的命令

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

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

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

/test <pipelinerun> branch:<branch>

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

/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 事件Pull Request 事件映射到 pull_requestMerge Request 事件映射到 pull_request
PR/MR 评论内置命令和 on-comment 适用于打开的 Pull Request。内置命令和 on-comment 适用于打开的 Merge Request。
Commit 评论/test/retest/cancel 可用于 commit 评论。/test/retest/cancel 可用于 commit 评论。
Tag 评论命令tag:<tag> 支持 GitHub App 和 webhook 集成。不支持 tag:<tag>
/ok-to-test <sha>当 PAC 配置要求时会使用 SHA 验证。该命令支持用于 MR 授权;SHA 验证是 GitHub 特有的保护机制。

有关更多命令详细信息,请参阅 Pipelines as Code GitOps 命令文档

验证触发器

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

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 与推送的 ref 匹配。
PR 或 MR 更新后没有运行on-event 包含 pull_request,并且 on-target-branch 与 PR/MR 的基础分支匹配。
/test <pipelinerun> 不匹配使用 .tekton/ 文件中的 namegenerateName,而不是生成的运行时 PipelineRun 名称。
Commit 评论不运行被评论的 commit 是所选 branch: 的 HEAD,或者是 tag: 指向的 commit。
on-comment 不运行新评论在去除首尾空格后与正则表达式匹配。

后续步骤