SuperAPI AI 工具集

konflux-tekton-updates

部署与运维

查看项目

更新于 10-16 10:06

技能介绍

用途

Konflux Tekton updates 是一个用于 Red Hat 开发者相关仓库的技能,目标是在一次 Konflux 任务 minor 标签升级后,更新 .tekton 流水线与生成器,让构建继续正常工作。要求按照各任务 MIGRATION.md 的说明执行迁移,并明确禁止添加会阻断未来 Konflux 更新的漂移(drift)测试。

前置条件

需要 skopeo、jq(版本 >= 1.7)、yq。可选:gh,用于从脚本创建 PR。原则是只在本地提交,未经人工审查绝不推送。

脚本与参数

  • updateDigests.sh:--no-push / --nopush(-p)为本地提交,不推送、不建 PR;--minor 会禁用推送,与 --no-push 搭配更清晰;--no-commit / -n 仅预览;-q 表示仅更新摘要(不做标签升级)。
  • generatePipelineRunsForPlugins.sh:--nopush 本地提交不推送;--nocommit 仅写 YAML。
  • generatePipelineRuns.sh:不会提交或推送。

除非用户明确要求推送,否则不要在没有 --no-push / --nopush 的情况下运行摘要或生成器脚本。

识别仓库布局

依据仓库中的标记文件读取对应参考:

  • .tekton/generatePipelineRunsForPlugins.sh → references/plugin-catalog.md
  • .tekton-templates/rhdh-pipeline.yaml → references/rhdh-midstream.md,变体 A(统一式)
  • .tekton-templates/rhdh-hub.yaml(无 rhdh-pipeline.yaml)→ references/rhdh-midstream.md,变体 B(1.9 共享 build-pipeline)

如果 plugin-catalog 与 midstream 标记同时存在,只针对当前所在仓库/分支应用更改。

工作流程

  1. 升级摘要:进入 .tekton,执行 ./updateDigests.sh --minor --no-push。这会通过 TEMPLATEPATH 更新 .tekton/.yaml 与 .tekton-templates/.yaml 中的 tag@sha256。变体 B 还会更新 .tekton/build-pipeline-rhdh-.yaml。标签变化会通过 updateDigests.sh 中的 migrationDocURL 列出 MIGRATION.md 链接(见 references/migration-urls.md)。不要使用已删除的 build-definitions/task/<name>/<tag>/ 路径。若脚本仍硬编码这些 404 URL,先改为使用 migrationDocURL,再重跑或改写打印出的链接。仅更新摘要(不升级标签)可用 ./updateDigests.sh --no-push -q。随后检查 git diff 中 quay.io/konflux-ci/tekton-catalog/task- 的改动。

  2. 应用迁移:对 updateDigests.sh(或 diff)列出的每个标签升级,用 references/migration-urls.md 解析出可用的迁移文档(例如 buildah-oci-ta/MIGRATION.md),获取原始 MIGRATION.md(必要时含 CHANGELOG.md / migrations/*.sh),只在模板与共享流水线中应用文档记载的用户操作,跳过“无需操作”的章节。如果 PLR 中仍含已移除参数(如 dev-package-managers)而模板已修复,则迁移尚未完成,需继续第 3 步。

  3. 重新生成 PipelineRun:在修改模板或共享流水线后(参数变更时不可省略)执行 ./generatePipelineRuns.sh -t <version>。分支与 -t 示例:rhdh-1-rhel-9 用 1,生成 rhdh-hub-1-push.yaml;rhdh-1.9-rhel-9 用 1.9,生成 rhdh-hub-1-9-push.yaml;rhdh-1.10-rhel-9 用 1.10,生成 rhdh-hub-1-10-push.yaml。在 main / next midstream 树中,如果 CEL 已使用 target_branch == "main",在用 -t 2(或类似值)重新生成后,若生成器把 CEL/on-push-for-* 改写为 release-<version>,需恢复为 main。变体 A 还需手动修补 rhdh-rag-content-<N>-{push,pull}.yaml(内联 pipelineSpec,非生成)。变体 B 的 hub/operator PLR 由 rhdh-hub.yaml / rhdh-operator.yaml 重新生成;build-pipeline-*.yaml 直接编辑,不由生成器处理。迁移与重新生成可先在本地提交,人工审查前不要推送。

  4. 人工审查与推送:由人工审查完整 diff(摘要提交加上迁移/重新生成提交),之后再 git push 或开 PR。

已知迁移模式

以最新 MIGRATION.md 为准,常见情况包括:

  • prefetch-dependencies-oci-ta 0.2→0.3:移除 dev-package-managers;新增流水线参数 enable-package-registry-proxy(默认 "true")并传给 prefetch 任务。变体 B 还需在 build-pipeline-rhdh-{hub,operator}.yaml 的 prefetch-dependencies-hub / prefetch-dependencies-operator 任务上,以及 rhdh-hub.yaml / rhdh-operator.yaml 的 PLR spec.params 上添加该参数。
  • build-image-index 0.2→0.3:仅从 build-image-index 任务移除 COMMIT_SHA / IMAGE_EXPIRES_AFTER;在 buildah(build-container)与 prefetch 上保留。
  • init 0.3→0.4:无流水线改动。
  • init 0.4.1→0.4.2:若存在自动添加且有问题的 sast-target-dirs 流水线参数则移除。
  • init 0.4.2→0.4.3:添加可选流水线参数 source-date-epoch、rewrite-timestamp、omit-history,并分别接线到 buildah 的 SOURCE_DATE_EPOCH / REWRITE_TIMESTAMP / OMIT_HISTORY。
  • show-sbom / summary(已弃用):移除 show-sbom / show-summary 的 finally 任务(迁移脚本会删除它们)。

反模式

  • 打开或获取 build-definitions/blob/main/task/<name>/<full-tag>/MIGRATION.md(已删除,应使用 migration-urls.md)。
  • 未使用 --no-push / --nopush 且未经人工签字就推送。
  • 遗留已移除的任务参数(dev-package-managers,build-image-index 上的 COMMIT_SHA)。
  • 修复模板后,在 PLR 仍引用旧参数时不运行 generatePipelineRuns.sh。
  • 当模板或 build-pipeline-*.yaml 才是真相来源时,只编辑 PLR。
  • 添加会在下次 Konflux 升级时失败的 verify_* 守卫。
  • 仅因 build-image-index 不再使用就从 PLR 中删除 image-expires-after。
  • 在 generatePipelineRunsForPlugins.sh 的 Containerfile 注释中硬编码 1-;应使用 ${RHDH_XY_VERSION},让 1.10.0 变为 1-10 而非 1。

限制

资料未提供该技能的价格、收费、支持平台或效果信息;相关内容暂未提供。