konflux-build 是一个用于从 PR 手动触发 Konflux 构建的命令技能,适用于 openshift/hypershift 仓库。其目标是根据给定的 PR 创建手动 PipelineRun,产出一个容器镜像。
用途
- 从 PR 编号或 PR URL 创建 Konflux 手动构建。
- 可指定组件名称或直接指定 .tekton/ 下的推送流水线模板文件。
- 默认镜像在 30 天后过期;使用 --non-expiring 可生成永久镜像。
主要能力
- 校验集群登录状态与命名空间。
- 解析 PR 的 head 提交 SHA、基础分支和 URL。
- 在基础分支的 .tekton/ 目录中查找匹配的 *-push.yaml 模板。
- 将推送模板转换为具体 PipelineRun YAML:替换名称生成方式、移除 PaC 注解、解析 {{revision}}、{{source_url}}、{{target_branch}} 等模板变量,并处理镜像过期参数。
- 使用空凭据 secret git-auth-empty 处理公开仓库的 git-clone 认证工作区。
- 创建 PipelineRun 并轮询到完成,随后用 skopeo 获取镜像摘要并报告最终镜像引用。
使用方式
- 指定 PR 编号和组件:/konflux-build 7813 hypershift-release-mce-26
- 指定 PR URL(会提示选择组件):/konflux-build https://github.com/openshift/hypershift/pull/7813
- 指定 PR、组件并生成不过期镜像:/konflux-build 7813 hypershift-operator --non-expiring
- 指定具体流水线模板:/konflux-build 7813 .tekton/hypershift-release-mce-26-push.yaml
执行流程概要
- 运行 oc whoami --show-server,确认集群为 https://api.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443;运行 oc project -q,确认命名空间为 crt-redhat-acm-tenant;任一项不符则停止。
- 使用 gh pr view 获取 headRefOid、baseRefName 和 URL。
- 在基础分支的 .tekton/ 中按组件名匹配 *-push.yaml,或使用用户指定模板。
- 生成 PipelineRun YAML 并写入 /tmp/<component>-manual-push.yaml。
- 确保 git-auth-empty secret 存在(类型 kubernetes.io/basic-auth,用户名密码为空)。
- 展示 YAML 并让用户确认后,使用 oc create -f 应用。
- 每 30 秒轮询 PipelineRun 状态,完成后用 skopeo inspect --no-tags docker://<output-image-url> 获取镜像摘要,报告 @sha256 形式的镜像引用,并提示镜像是否过期。
适用场景
- 需要从特定 PR 快速产出可部署的容器镜像。
- 针对热修复构建不随时间过期的镜像。
- 需要按指定流水线模板复现构建流程。
限制与要求
- 必须已使用 oc CLI 登录指定 Konflux 集群,并具有 crt-redhat-acm-tenant 命名空间访问权限。
- 需要已认证的 gh CLI,并能访问 openshift/hypershift。
- 需要 skopeo 用于镜像检查。
- 仅面向 openshift/hypershift 仓库的 PR。
- 未登录、命名空间错误、PR 不存在、无匹配模板、多个组件匹配、PipelineRun 创建失败或提前归档等情况各有对应错误处理;归档时会回退到 skopeo 直接检查镜像。
其他信息
- 该技能通过技能页面提供,页面来源标注为 openshift/hypershift。