feat: automate version management with release-plz#233
Conversation
|
uroborosql-fmt のリリースプロセスやバージョニングは課題に感じていたので改善されて嬉しいです! CLI バイナリのリリース
CLI バイナリも GitHub Release に含めるのが良いと思います。 release-plz/action のサプライチェーン攻撃対策release-plz/action は強い権限の PAT を扱うため、サプライチェーン攻撃を受けた場合の影響範囲が大きそうです(不正なリリース作成 → VSCode 拡張への波及など)。 Github Actions のバージョン指定についてCI.yml で使われている actions/checkout や actions/setup-node のバージョンを見ると v3 とv4 が混在しているようですが、特に理由が無ければ統一はしておきたいです。 |
|
@tanzaku
CLIバイナリの命名規則、アーカイブ形式などの決定が必要なので、別PRで対応しようと思いますがよろしいでしょうか?
コミットハッシュ指定に変更しました。 - uses: release-plz/action@v0.5
+ uses: release-plz/action@1528104d2ca23787631a1c1f022abb64b34c1e11 # v0.5https://github.com/release-plz/action/commits/v0.5
v4に統一しました。 |
概要
バージョン管理を手動(#214 のような bump up PR)から release-plz による自動化に移行する。
背景
変更内容
1. Cargo.toml: workspace version の一元化
全クレートのバージョンを
[workspace.package]で一元管理するように変更。2. release-plz の導入
release-plz.toml: crates.io 非公開、コアクレートのみがタグ/Release/CHANGELOG を管理.github/workflows/release-plz.yml: main push → Release PR 自動作成 → マージ後タグ自動作成3. NAPI .tgz の配布先を GitHub Pages から GitHub Releases に移行
これまで NAPI バイナリ (.tgz) は GitHub Pages にデプロイしていたが、
force_orphan: trueにより新バージョンのデプロイで旧バージョンが消えてしまう問題があった。GitHub Releases のアセットに変更することで、バージョンごとに .tgz が保持されるようになる。force_orphanで上書き)https://future-architect.github.io/uroborosql-fmt/uroborosql-fmt-napi-X.Y.Z.tgzhttps://github.com/future-architect/uroborosql-fmt/releases/download/vX.Y.Z/uroborosql-fmt-napi-X.Y.Z.tgz4. CI.yml: デプロイフローの改善
tags: ["v*"]を追加し、タグ push 時のみデプロイdeploy-to-gh-pagesを2ジョブに分離upload-napi-to-release: NAPI .tgz を GitHub Release にアップロード(gh release upload)deploy-wasm-to-gh-pages: WASM のみ GitHub Pages にデプロイ(デモページ用)5. ドキュメント
docs/release-plz-migration.md: 設計の経緯・フロー・手動作業まとめリリースフロー: Before / After
Before(手動)
After(release-plz で自動化)
比較
マージ前の TODO
repoスコープで作成し、リポジトリの Secrets にRELEASE_PLZ_TOKENとして登録する。デフォルトのGITHUB_TOKENで作成したタグは他のワークフローをトリガーしないため必須。Fine-grained PAT はリポジトリ単位で権限を絞れるが、組織に所属していないと Resource owner に組織を指定できないため Classic PAT を使用する。feat:→ minor,fix:→ patch,feat!:→ major。従来のコミットも patch として扱われるため段階的に移行可能。検討事項
VSCE_PAT(個人 PAT)を使用して VS Code Marketplace への公開を行っており、PAT 運用の前例がある。後から GitHub App に切り替え可能なので、一旦 PAT で運用を開始する。マージ後の TODO
v1.0.1タグを打つ。release-plz は最後のタグ以降のコミットから CHANGELOG を生成するため、タグを打つことで以降の純粋な機能変更だけが CHANGELOG に載るようになる。変更ファイル
Cargo.tomlversion = "1.0.1"を[workspace.package]に追加crates/*/Cargo.toml(4ファイル)version.workspace = trueに変更.github/workflows/CI.ymlrelease-plz.toml.github/workflows/release-plz.ymldocs/release-plz-migration.md