SuperAPI AI 工具集

konflux-build

部署与运维

查看项目

更新于 10-27 08:25

技能介绍

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

执行流程概要

  1. 运行 oc whoami --show-server,确认集群为 https://api.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443;运行 oc project -q,确认命名空间为 crt-redhat-acm-tenant;任一项不符则停止。
  2. 使用 gh pr view 获取 headRefOid、baseRefName 和 URL。
  3. 在基础分支的 .tekton/ 中按组件名匹配 *-push.yaml,或使用用户指定模板。
  4. 生成 PipelineRun YAML 并写入 /tmp/<component>-manual-push.yaml。
  5. 确保 git-auth-empty secret 存在(类型 kubernetes.io/basic-auth,用户名密码为空)。
  6. 展示 YAML 并让用户确认后,使用 oc create -f 应用。
  7. 每 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。