チェンジログのセマンティックバージョニング

Conventional Commitsとセマンティックバージョニングを組み合わせて、各リリースの正しいバージョン番号を決定する方法を理解します。

Versioning

詳細な説明

Conventional CommitsとSemantic Versioningの連携

Semantic Versioning(SemVer)は3部構成のバージョン番号を使用します:MAJOR.MINOR.PATCH。Conventional Commitsはコミットタイプからバージョンインクリメントへの直接的なマッピングを提供します。

マッピングルール

条件 バージョンバンプ
!またはBREAKING CHANGEを持つコミット MAJOR 1.2.3 → 2.0.0
featコミット(破壊的変更なし) MINOR 1.2.3 → 1.3.0
fixdocschore等のみ(featなし、破壊的変更なし) PATCH 1.2.3 → 1.2.4

バージョンの決定

ジェネレーターにバージョンを入力する前に、コミットをスキャンします:

  1. 破壊的変更はありますか? → MAJORをインクリメント、MINORとPATCHを0にリセット。
  2. featコミットはありますか? → MINORをインクリメント、PATCHを0にリセット。
  3. それ以外 → PATCHをインクリメント。

コミットセットの例

feat(auth): add OAuth2 login
fix(ui): correct sidebar z-index
docs: update README

このセットにはfeatが含まれていますが破壊的変更はないため、バージョンはMINORバンプとなります。前回のリリースが1.2.3だった場合、新しいバージョンは1.3.0です。

プレリリースバージョン

SemVerは2.0.0-beta.11.3.0-rc.1のようなプレリリース識別子をサポートしています。ジェネレーターは任意のバージョン文字列を受け入れるため、プレリリースバージョンをバージョン入力フィールドに直接入力できます。

契約としてのチェンジログ

チェンジログがSemVerでバージョニングされると、ユーザーとの契約になります。バージョン番号はアップグレードのリスクレベル(patch=安全、minor=新機能だが後方互換、major=破壊的変更)を伝え、チェンジログの詳細が何が変更されたかを説明します。

ユースケース

セマンティックバージョニングに従うすべてのプロジェクトの基本です。Conventional CommitsとSemVerの組み合わせにより、自動バージョン決定が可能になり、消費者に明確なアップグレード期待を提供します。

試してみる — Changelog Generator

フルツールを開く