mcpField
R
rhdh-yarn-bump

rhdh-yarn-bump

github.com/redhat-developer開発1947 回インストール1 日前に更新
リポジトリ

rhdh-yarn-bump について

RHDH 関連リポジトリ間で Yarn Berry 4.x のバージョンを統一する保守スキルです。コンテナ設定の固定値や共有リリースバイナリも扱い、PR と MR の作成まで行います。

主な機能

  1. 016 リポジトリで Yarn を更新
  2. 02packageManager と yarnPath の更新
  3. 03コンテナと環境変数の固定値を変更
  4. 04ロックファイル更新と整形
  5. 05PR と MR の作成

活用シーン

  1. 01RHDH リポジトリ間の Yarn バージョン統一
  2. 02指定バージョンでのドライラン
  3. 03既存チェックアウトの更新
  4. 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.yaml
scripts/
bump-yarn.js
yarn-bump.sh
tests/
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/rhdhdistgit バイナリ+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 がオープン中、あるいは差分がないためにスキップされていること)です。

コメント