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
执行流程:
- 验证 Konflux 登录;失败时提示先执行 oc login --web https://api.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443。
- 运行 bash hack/tools/scripts/create-manual-tag-pipelinerun.sh {{args.0}} {{args.1:-main}} 创建 PipelineRun,未指定分支时默认 main。
- 从输出中提取 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 在命令行监控状态。
- PipelineRun 成功后运行 bash hack/tools/scripts/create-snapshot-from-pipelinerun.sh <pipelinerun-name> 创建 Snapshot。
- 用 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。