SuperAPI AI 工具集

test-tag-pipeline

部署与运维

查看项目

更新于 10-27 08:25

技能介绍

test-tag-pipeline 是 OpenShift HyperShift 仓库中的技能,用途是在合并 PR 前测试标签流水线的修改。它不会改动标签本身,而是用更新后的流水线定义重新构建该标签所指向的提交,从而验证流水线修复是否有效。

用途 在合并流水线变更之前,先用真实标签验证新流水线定义能否正常构建,避免合并后才发现问题。

主要能力

  • 校验是否已登录 Konflux 实例(oc whoami)。
  • 获取标签指向的提交 SHA。
  • 从指定分支或 fork 拉取标签流水线定义。
  • 用该标签的实际值替换模板变量。
  • 创建手动 PipelineRun,使用更新后的流水线构建标签对应的提交。
  • 输出 PipelineRun 名称,并拼接 Konflux Web UI 地址供监控。
  • 在 PipelineRun 成功后创建 Snapshot,触发 Enterprise Contract 校验,并输出 EC PipelineRun 的 Web UI 地址。

使用方式 命令格式:/test-tag-pipeline <tag-name> [branch-spec]

  • tag-name(必填):要重建的已有标签,例如 v0.1.69。
  • branch-spec(可选):包含更新后流水线的分支,默认 main;格式为 [fork:]branch-name,未指定 fork 时默认 openshift。

示例: /test-tag-pipeline v0.1.69 /test-tag-pipeline v0.1.69 build-gomaxprocs-image /test-tag-pipeline v0.1.69 celebdor:OCPBUGS-63194-part2

执行流程:

  1. 验证 Konflux 登录;失败时提示先执行 oc login --web https://api.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443。
  2. 运行 bash hack/tools/scripts/create-manual-tag-pipelinerun.sh {{args.0}} {{args.1:-main}} 创建 PipelineRun,未指定分支时默认 main。
  3. 从输出中提取 PipelineRun 名称,拼接 Web UI 地址:https://konflux-ui.apps.stone-prd-rh01.pg1f.p1.openshiftapps.com/ns/crt-redhat-acm-tenant/applications/hypershift-operator/pipelineruns/{pipelinerun-name}。可用 oc get pipelinerun <name> -w 在命令行监控状态。
  4. PipelineRun 成功后运行 bash hack/tools/scripts/create-snapshot-from-pipelinerun.sh <pipelinerun-name> 创建 Snapshot。
  5. 用 oc get pipelinerun -l appstudio.openshift.io/snapshot=<snapshot-name> -o name 获取 EC PipelineRun,并拼接对应 Web UI 地址展示。也可用 oc get snapshot <snapshot-name> -w 和 oc get pipelinerun -l appstudio.openshift.io/snapshot=<snapshot-name> 在命令行查看。

适用场景

  • 在合并 PR 前验证标签流水线修复。
  • 需要针对特定标签、特定分支或 fork 的流水线定义做端到端构建验证。
  • 需要进一步触发 Enterprise Contract 校验并查看结果的场景。

限制

  • 需要安装 oc 与 yq 命令行工具,并具备 Konflux 实例的登录权限。
  • PipelineRun 本身耗时较长(资料提到 20 分钟以上),因此分两步在完成后创建 Snapshot。
  • 必须严格按给定参数执行;未指定分支时固定默认 main,不应替换为当前 git 分支或其他推断值。
  • 具体的实现细节见 hack/tools/scripts/create-manual-tag-pipelinerun.sh 与 hack/tools/scripts/create-snapshot-from-pipelinerun.sh。