rhdh-yarn-bump について
RHDH 関連リポジトリ間で Yarn Berry 4.x のバージョンを統一する保守スキルです。コンテナ設定の固定値や共有リリースバイナリも扱い、PR と MR の作成まで行います。
主な機能
- 016 リポジトリで Yarn を更新
- 02packageManager と yarnPath の更新
- 03コンテナと環境変数の固定値を変更
- 04ロックファイル更新と整形
- 05PR と MR の作成
活用シーン
- 01RHDH リポジトリ間の Yarn バージョン統一
- 02指定バージョンでのドライラン
- 03既存チェックアウトの更新
- 04週次メンテナンスでの Yarn 同期
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ redhat-developer/ rhdh-skills --skill rhdh-yarn-bumpインストール後、Claude Code で/rhdh-yarn-bumpを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlscripts/bump-yarn.jsyarn-bump.shtests/bump-yarn.test.mjs詳細
RHDH 複数リポジトリの Yarn バージョン更新
目標
次のリポジトリ全体に Yarn Berry 4.x のバージョン更新を反映します。
| リポジトリ | 備考 |
|---|---|
redhat-developer/rhdh-plugins | ルートワークスペース(ハードコードされている場合は Fullsend も) |
redhat-developer/rhdh | ルート+ネストされたワークスペース+Containerfile |
redhat-developer/rhdh-plugin-export-overlays | 多数の packageManager ピン |
redhat-developer/rhdh-cli | ルートの packageManager / yarnPath |
gitlab.cee.redhat.com/rhidp/rhdh | distgit バイナリ+ENV YARN=(取得する CLI は GitHub と同じバイト列) |
gitlab.cee.redhat.com/rhidp/rhdh-plugin-catalog | ワークスペースごとのピン+Containerfile |
Renovate による Yarn の packageManager 更新は無効になっています(RHIDP-17563)。このスキルが更新手段です。
ブランチ: GitHub と GitLab CEE の現行ブランチは main です。
実際の変更内容
yarn set version <to> # packageManager + yarnPath + .yarn/releases
chmod +x .yarn/releases/yarn-<to>.cjs
yarn install --mode=update-lockfile
package.json で prettier:check または prettier:fix が定義されている場合、yarn-bump.sh はコミット前に、変更されたファイルに対して yarn prettier --ignore-unknown --write を実行します。Yarn は .yarnrc.yml に "**" を書き込みますが、Prettier(rhdh-cli)では '**' が必要です。
さらに、Yarn が検出できないピンも対象です。ENV YARN=、Containerfile / Dockerfile の yarn_version=、およびリテラルの yarn set version(--from に含まれないバージョンも含む)です。denylist のピンはそのまま維持されます。yarn set version $yarn_version は変数のままです。
yarn-bump.sh は https://repo.yarnpkg.com/<to>/packages/yarnpkg-cli/bin/yarn.js(yarn set version が使用するものと同じ URL)に対して curl -fsSL を1回実行し、そのファイルを更新対象のすべての .yarn/releases ディレクトリにインストールします。GitHub の PR と GitLab の MR では、yarn-<to>.cjs(モード 100755)と削除された古いバイナリをコミットします。ダウンロードに失敗した場合、GitLab は GitHub での更新によって生成されたバイナリのコピーにフォールバックします。
デフォルトの手順:yarn-bump.sh
SKILL=<this skill's directory>
"$SKILL/scripts/yarn-bump.sh" # resolve latest Yarn 4.x, clone, bump, PR/MR
"$SKILL/scripts/yarn-bump.sh" --to 4.18.1 --dry-run
Yarn 4.x(@yarnpkg/cli)を解決し(--to を指定しない限り stable / 5.x は使用しません)、その CLI を1回ダウンロードして、6つのリポジトリをクローンします。オープン中の chore/automated-yarn-bump* PR / MR と denylist のピン(4.8.1 / 4.9.2 / 4.15.0)をスキップし、--bin を指定して各ツリーを更新するため、リリースバイナリも差分に含まれます。コミットは rhdh-bot として行い、兄弟ディレクトリの /rhdh-pr-mr を使って PR / MR を作成します(ボットによる更新では Jira キーは不要です)。
GitLab の週次メンテナンスでは、このスキルパックをクローンし、digest / bootc の後、Quay のクリーンアップ前に yarn-bump.sh を実行します。
手動の更新スクリプト(既存のチェックアウト)
node "$SKILL/scripts/bump-yarn.js" --scan --root /path/to/repo
node "$SKILL/scripts/bump-yarn.js" --to 4.18.1 --from-all --root /path/to/rhdh-plugins
curl -fsSL -o /tmp/yarn-4.18.1.cjs \
https://repo.yarnpkg.com/4.18.1/packages/yarnpkg-cli/bin/yarn.js
node "$SKILL/scripts/bump-yarn.js" --to 4.18.1 --bin /tmp/yarn-4.18.1.cjs \
--from-all --root /path/to/rhdh-downstream
--from-all を省略した場合、--from 4.12.0,4.14.1 がデフォルトです。ロックファイルの更新には45分以上かかる場合があります。
アンチパターン
- Renovate による Yarn の更新を再度有効にしないでください。Containerfile /
ENV YARN=の変更が漏れます。 yarn set version stableを実行しないでください。各リポジトリで同一の 4.x バージョンを使用する必要があります。- リポジトリごとに別の Yarn バイナリをダウンロードしないでください。
repo.yarnpkg.comから1回だけ取得し、--binでそのバイト列をすべての PR / MR にコピーします。--copy-binは、そのダウンロードに失敗した場合のみ使用するフォールバックです。 rhdh-1-rhel-9を特別扱いしないでください。どちらの CEE リポジトリもデフォルトはmainです。
テスト
node --test "$SKILL/tests/bump-yarn.test.mjs"
bash -n "$SKILL/scripts/yarn-bump.sh"
完了条件
対象のワークスペースが --to に一致し(packageManager、yarnPath、モード 100755 の yarn-<to>.cjs)、追加項目が書き換えられ、--no-refresh-locks を指定していない場合はロックファイルが更新され、PR / MR が作成されていること(または、ボットの PR がオープン中、あるいは差分がないためにスキップされていること)です。