運用マニュアル:changelogen によるリリース手順

運用マニュアル:changelogen によるリリース手順

本プロジェクトでは、リリースの自動化とチェンジログの生成に changelogen を採用しています。

概要と CI/CD フロー

changelogen を使用し、ローカルでのバージョン更新・タグ作成と GitHub Actions (CI) による自動パブリッシュを連携させます。モノレポ構成であり、パッケージごとに独立してバージョン管理を行うため、独立したタグ形式を使用します。

  1. 開発者 (Local): pnpm run release:* を実行し、バージョン更新とタグを GitHub へプッシュ。

  2. GitHub Actions (CI): v* または **@v* 形式のタグを受け取り、ビルドと npm への公開を自動実行。

安全な公開(npm Provenance / OIDC)を保証するため、実際の npm publish は CI 上でのみ行われます。ローカルのスクリプトには publish 命令は含まれていません。

npm タグ(dist-tag)の管理

GitHub Actions によるパブリッシュ時、npm の latest タグは以下のルールで自動管理されます:

  • 正式版リリース時: 常に latest タグが更新されます。

  • プレリリース版 (alpha/beta/rc) リリース時:

    • 現在の latest が「プレリリース版」または「未設定」の場合、新しくパブリッシュしたバージョンを latest タグで公開します。

    • すでに「正式版(安定版)」が latest に存在する場合、本来の識別子(alpha など)のタグで公開されます。

    • 意図: 安定版がない開発初期は最新の alpha/beta を最新として扱い、安定版リリース後は安定版を最新として保持するため。

認証方式(OIDC)による制約 本プロジェクトは npm Secret (Token) を持たず、GitHub Actions の OIDC 認証を利用しています。この方式では「1 回のパブリッシュで 1 つのタグしか付与できない」という制約があるため、上記ルールで latest が優先された場合、alphabeta などの個別タグは更新されず一つ前のバージョンのまま残ります。実用上、タグなしの npm install で最新版が入ることを優先した設計です。

安定版が存在するのにプレリリースが latest になるケースについて 過去に安定版(例: 0.1.0)がリリースされていても、現在 latest タグがプレリリース版(例: 0.1.2-alpha.6)を指している状態であれば、システムは「現在はプレリリース運用フェーズである」と判断し、新しいプレリリース版で latest を維持・更新し続けます。


リリース手順

1. リリースコマンドの実行

リリースしたいパッケージ(ルート lism-ui-vue、または apps/lism-ui-vue-nuxt)のディレクトリにて、リリースの種類に応じたコマンドを実行します。

正式版リリース (Latest)

pnpm run release
pnpm run release --patch
pnpm run release --minor
pnpm run release --major

プレリリース (Alpha / Beta / RC)

pnpm run release:alpha
pnpm run release:beta
pnpm run release:rc

これによって以下の処理が自動で行われます:

  • バージョン更新: package.jsonversion を更新。

  • チェンジログ更新: CHANGELOG.md に変更点を追記。

  • コミット & タグ: バージョン更新のみのコミットと、タグを作成。


設定の詳細(モノレポ対応)

モノレポ内の各パッケージでタグが競合しないよう、ディレクトリごとに changelog.config.ts を配置してタグ形式を固定しています。

  • ルート (lism-ui-vue): lism-ui-vue@v{{newVersion}}

  • Nuxt モジュール (@lism-ui-vue/nuxt): @lism-ui-vue/nuxt@v{{newVersion}}

これにより、GitHub Actions は **@v* 形式のタグを検知して適切にビルドを開始します。


コミットメッセージの重要性

changelogen はコミットメッセージに基づいてチェンジログを生成します。Conventional Commits に従ってください。

  • feat: ... 新機能

  • fix: ... バグ修正

  • perf: ... パフォーマンス改善

  • docs: ... ドキュメントのみ

  • refactor: ... リファクタリング

  • chore: ... ビルド周り、ツールの変更

  • ci: ... CI/CD ファイルの変更

破壊的変更がある場合は、feat!: のように ! を入れるか、フッターに BREAKING CHANGE: と記載してください。