rhdh-konflux-tasks について
rhdh-konflux-tasks は、RHDH プロジェクトの Konflux Tekton タスク版とパイプライン設定を保守するスキルです。ビルドパイプライン担当者向けに、文書化された移行を適用し、該当する PipelineRuns を再生成します。
主な機能
- 01Tekton タスクのダイジェスト固定を更新
- 02文書化されたテンプレート移行を適用
- 03PipelineRuns を再生成
- 04信頼済みタスクの状態を確認
活用シーン
- 01Konflux タスク更新後のパイプライン移行
- 02テンプレート更新と PipelineRuns 再生成
- 03タスク固定値の信頼性確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ redhat-developer/ rhdh-skills --skill rhdh-konflux-tasksインストール後、Claude Code で/rhdh-konflux-tasksを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/konflux-migration-urls.mdkonflux-plugin-catalog.mdkonflux-rhdh-midstream.mdkonflux-trusted-tasks.mdscripts/check-trusted-tasks.shworkflows/konflux-task-update.md詳細
Konflux Tekton タスクの更新
Konflux タスクのタグを更新した後もビルドが通るようにするには、固定されている
tag@sha256 ダイジェストを更新し、各タスクの MIGRATION.md に記載された内容を適用して、
移行後のテンプレートに合うように PipelineRun を再生成します。
手順
workflows/konflux-task-update.md を読み込みます。リポジトリのレイアウトを検出し、
一致するリファレンスに案内します。
references/konflux-plugin-catalog.md—rhdh-plugin-catalog、マーカー.tekton/updatePLRs.sh(main / 2.1 以降)。1.9 および 1.10 ストリームでは、ジェネレーターの 名前は引き続き.tekton/generatePipelineRunsForPlugins.shです(非推奨ですが、レイアウトは同じです)。references/konflux-rhdh-midstream.md— RHDH ミッドストリーム、バリアント A (.tekton-templates/rhdh-pipeline.yaml)およびバリアント B(共有のbuild-pipeline-rhdh-*.yamlを使う.tekton-templates/rhdh-hub.yaml)。references/konflux-migration-urls.md— タスク名とタグから、実際のMIGRATION.mdを特定します。ほとんどのタスクがkonflux-ci/build-definitionsを離れ、その下のバージョン付きパスが現在 404 を返すためです。references/konflux-trusted-tasks.md— ECP/期限切れ/信頼されていないピン。data-acceptable-bundlesに対してscripts/check-trusted-tasks.shを実行します。
ダイジェスト、移行、信頼済みタスクの確認後、該当する GitHub の main または release-* 系列に対して、
名前で /rhdh-base-images を呼び出します([konflux-task-update.md](workflows/konflux-task-update.md) の手順 5 を参照)。
ここからそのスキルのスクリプトを実行しないでください。
プラグインのミッドストリームへの反映との境界
.tekton を扱うスキルは 2 つありますが、それぞれ異なる目的で変更します。
- このスキルは、ストリーム全体にわたる Konflux タスクの保守を担当します。ダイジェストの更新、テンプレートおよび共有パイプラインへの移行、ブランチ上のすべてのコンポーネントの PipelineRun の全面的な再生成を行います。
/rhdh-plugin-midstream-propagateは、プラグインのワークスペース 1 つをオーバーレイ経由でカタログに反映する処理を担当します。これには、それに伴うワークスペース単位の PLR タグの限定的な編集も含まれ、全面的な再生成は行いません。
依頼が「このプラグインのバージョンをミッドストリームに反映したい」なら、
/rhdh-plugin-midstream-propagate を使います。依頼が「Konflux タスクが移動したので、パイプラインを追従させたい」なら、このスキルを使います。単一のワークスペース更新を反映するために全面的な再生成を実行してはいけません。すべてのコンポーネントの PLR が書き換えられます。
ベースイメージとの境界
/rhdh-base-images は、FROM タグ、rpms.lock.yaml、Node ヘッダー
(.nvm/releases/node-v*-headers.tar.gz)、オペレーターの go.mod、プラグインカタログの
builder.Containerfile / .nvm/ / konflux.additional-tags、およびオーバーレイの
versions.json の node を担当します。このスキルでは、そのワークフローを再構成しません。Konflux ストリームを GitHub ブランチセレクターに対応付け、チェックアウト先(ユーザー指定、またはカタログとオーバーレイを含む /rhdh-context)を特定し、/rhdh-base-images を呼び出します。
Konflux のログに could not find releases/node-v*-headers.tar.gz とある場合は、引き継ぎ対象です。Tekton のピンの問題ではありません。このスキルでカタログの FROM をピン留めしたり、.nvm/ をコピーしたりしないでください。
| Konflux/カタログのストリーム | /rhdh-base-images の -b |
|---|---|
rhdh-1.9-rhel-9 | release-1.9 |
rhdh-1.10-rhel-9 | release-1.10 |
release-2.Y | release-2.Y |
main(2.1 以降) | main |
その他の rhdh-<ver>-rhel-<N> | 該当する GitHub ブランチが存在する場合は release-<ver> |
Mintmaker との境界
Mintmaker の Tekton マネージャーとこのスキルは、どちらもタスクのピン留めを扱いますが、役割は異なります。
- 毎週のメンテナンスでは、
updateDigests.shを実行しなくなりました。Mintmaker はrhdhとrhdh-plugin-catalogの同一タグのダイジェストとパッチタグを自動マージします(konflux/digests/<branch>、ブランチごとに MR を 1 件)。 - Mintmaker は上流のタスク移行スクリプトを実行するため、マイナーまたはメジャーのバージョンアップで YAML が書き換えられることがあります(
BUILD_ARGS_FILE→BUILD_ARGS_FILES、CACHI2_ARTIFACT→PREFETCH_ARTIFACT)。これらの MR はkonflux/migrations/<branch>に残り、自動マージされません。Mintmaker はgeneratePipelineRuns.shを実行しません。 - 移行 MR をダイジェストの更新と重複しているとして閉じないでください。残りのタグの更新(
prefetch-dependencies-oci-ta、buildah-oci-ta、source-build-oci-ta、show-sbom/summaryの削除)は、このスキルの--minorとMIGRATION.mdとgeneratePipelineRuns.shの手順で行います。
-oci-ta タスクのバリアントを優先する
Konflux カタログにワークスペースベースのタスクと <name>-oci-ta バリアントの両方がある場合、テンプレート、共有パイプライン、PLR では -oci-ta バンドルを優先してください。OCI-TA タスクは、source ワークスペースの代わりに SOURCE_ARTIFACT / CACHI2_ARTIFACT と ociStorage パラメーターを使ってアーティファクトを受け渡します。
Operator バンドルの例外: ユーザーから operator バンドルの変更を明示的に依頼されない限り、ストリーム全体に適用する変更で rhdh-operator-bundle.yaml または rhdh-operator-bundle-* PLR を -oci-ta タスクに移行しないでください。Hub、operator、must-gather、bootc は対象です。rhdh-rag-content-* は 1.10 専用です(非推奨で、main / 2.1 では削除されています)。バリアントごとのファイル一覧:
konflux-rhdh-midstream.md。
| レガシータスク | 優先する OCI-TA タスク |
|---|---|
git-clone | git-clone-oci-ta |
prefetch-dependencies | prefetch-dependencies-oci-ta |
buildah | buildah-oci-ta |
source-build | source-build-oci-ta |
sast-snyk-check | sast-snyk-check-oci-ta |
sast-shell-check | sast-shell-check-oci-ta |
sast-unicode-check | sast-unicode-check-oci-ta |
push-dockerfile | push-dockerfile-oci-ta |
prefetch-dependencies → prefetch-dependencies-oci-ta(パイプラインのタスク名は prefetch-dependencies のままでもかまいません):SOURCE_ARTIFACT、ociStorage、ociArtifactExpiresAfter、enable-package-registry-proxy を追加し、dev-package-managers と source ワークスペースを削除します。git-basic-auth と netrc は維持し、後続タスクがプリフェッチの SOURCE_ARTIFACT / CACHI2_ARTIFACT の結果を使うように接続します。
OCI-TA への切り替えは updateDigests.sh では処理されません。タスクの現行 MIGRATION.md に従ってパラメーターとワークスペースを適用し、その後 PLR を再生成してください。
執筆ルール
.tekton YAML の編集、コミット、プッシュ、プルリクエストの作成は書き込み操作です。
/mutation-gate に従ってください。
- 常に
--no-push/--nopushを指定してください。ユーザーから明示的に依頼されない限り、プッシュしたりプルリクエストを作成したりしないでください。generatePipelineRuns.shはコミットもプッシュもしません。ユーザーからプルリクエスト/マージリクエストの作成を依頼された場合は、/mutation-gateの承認後、名前を指定して/rhdh-pr-mrを呼び出してください。 - このスキルでプルリクエストまたはマージリクエストを作成する場合は、タイトルの末尾に対象ブランチを角括弧で付けてください。例:
chore: update Konflux Tekton tasks [release-2.1]。mainを対象とする場合は[main]を付けてください。/rhdh-pr-mrは、付いていない場合にこの接尾辞を追加します。 - 本文には必ず https://github.com/redhat-developer/rhdh-skills/tree/main/skills/ci/rhdh-konflux-tasks を含めてください。作成前に、記載する Jira キーをユーザーに確認してください。ユーザーがキーを提示した場合は
https://redhat.atlassian.net/browse/<KEY>を追加し、--issueを指定してください。キーの記載がない場合、または「no jira」と回答された場合は、Jira の行を省略し、--issueも指定しないでください。キーを検索したり、作り出したりしないでください。 - レガシータスクを
-oci-taに置き換える場合は、まずテンプレートと共有パイプラインを編集し、その後 PLR を再生成するか、インラインのpipelineSpecPLR を手作業で修正してください。PLR だけを編集すると、信頼できる情報源が古いままになります。 - ライブの
MIGRATION.mdに記載されたユーザー操作だけを適用してください。「対応不要」のセクションはスキップしてください。パイプラインパラメーターを固定し、次回の Konflux アップグレードを失敗させるverify_*ガードを作り出さないでください。ライブの信頼済みタスクリストに対してscripts/check-trusted-tasks.shは実行してください。これは ECP の許可リスト確認であり、パラメーターのドリフト確認ではありません。 - コミット前に、
quay.io/konflux-ci/tekton-catalog/task-*の変更についてgit diffを確認してください。 - Tekton の作業後、名前を指定して
/rhdh-base-imagesを呼び出してください(スクリプトのパスは使用しないでください)。ストリームをmainまたはrelease-*に対応付けてください。名前付きの rhdh、catalog、overlays チェックアウトを渡し、このスキルがbuilder.Containerfile/.nvm//overlays のversions.jsonをピン留めできるようにしてください。このスキルからそれらのファイルを編集しないでください。 .tekton/と.tekton-templates/全体の差分は人間がレビューし、プッシュのタイミングを判断します。
完了条件
タグが更新された各タスクについて、旧タグと新タグを明記し、それぞれに適用したマイグレーションまたは不要と判断した理由を対応付け、影響を受けたテンプレートと共有パイプラインを列挙してください。テンプレートまたはパイプラインのパラメーターが変更された場合は、該当するすべての箇所で generatePipelineRuns.sh または updatePLRs.sh(1.9/1.10 では非推奨の generatePipelineRunsForPlugins.sh)を実行してください。再生成したファイルと手作業で編集したファイルを明記してください。Variant B の build-pipeline-*.yaml ファイルは、ジェネレーターで変更されることはありません。rhdh-rag-content-* のインライン pipelineSpec PLR は 1.10 にのみ存在します(非推奨。main/2.1 では削除済み)。存在する場合は手作業で編集してください。main では探さないでください。
scripts/check-trusted-tasks.sh(14 日間の対象期間)が成功していること、または残る問題が、文書化された expiring-no-successor/expired-no-successor 警告だけであることが条件です。それらの警告は、期限日、数日後に再実行すること、Slack の #konflux-users とともに、ユーザー向けの要約に記載してください。後継がないという警告をデバッグ扱いにしないでください。
対応付けた GitHub ブランチに対して /rhdh-base-images を実行済みであること(最低限、分析を実施)。現在と最新の FROM タグ、Node ヘッダーのバージョン、ヘッダーまたは RPM に変更があったかを明記してください。また、plugin-catalog については builder.Containerfile の FROM の旧値→新値、.nvm/releases/ がそのイメージの node --version と一致するか、grep konflux.additional-tags build/containerfiles/builder.Containerfile に .nvmrc と一致する node-v が含まれるかを記載してください。このスキルをスキップした場合は、その理由として、チェックアウトが名前付きで渡されず、/rhdh-context でも見つからなかったことを明記してください。
コミットの状態を明記し、ユーザーがプッシュを依頼していない限り、何もプッシュしていないことも明示してください。解決できなかったマイグレーション文書がある場合は、その名前を挙げ、アップグレードに対応が不要だったと決めつけないでください。