01. バージョン管理規定
このドキュメントは、プロジェクト成果物のバージョン管理に関するルールを定めます。明確で一貫性のあるバージョン管理は、変更の追跡を容易にし、ユーザーや開発者が更新内容を理解する上で不可欠です。
1. バージョニング戦略: セマンティックバージョニング
本プロジェクトのバージョン番号は、セマンティックバージョニング 2.0.0 (SemVer) の仕様に厳密に従います。
- フォーマット:
メジャー.マイナー.パッチ(例:1.2.3) - 公式サイト: https://semver.org/lang/ja/
1.1. バージョン番号のインクリメントルール
バージョン番号は、以下のルールに基づいてインクリメントします。このルールは、05_ブランチ規定で定義されたConventional Commitsの<type>と密接に関連しています。
-
メジャーバージョン (MAJOR):
- 後方互換性のない変更が加えられた場合にインクリメントします。
- これは、コミットメッセージのフッターに
BREAKING CHANGE:が含まれる場合に相当します。 - メジャーバージョンを上げる際は、マイナーとパッチは
0にリセットします。(例:1.5.2→2.0.0)
-
マイナーバージョン (MINOR):
- 後方互換性を保ったまま、新機能が追加された場合にインクリメントします。
- これは、
featタイプのコミットが含まれる場合に相当します。 - マイナーバージョンを上げる際は、パッチは
0にリセットします。(例:1.5.2→1.6.0)
-
パッチバージョン (PATCH):
- 後方互換性を保ったまま、バグ修正が行われた場合にインクリメントします。
- これは、
fixタイプのコミットが含まれる場合に相当します。 - Hotfixリリースは、通常パッチバージョンの更新となります。
その他のコミットタイプについて
docs, refactor, style, chore といった、アプリケーションの挙動に直接影響しないコミットは、原則としてバージョン番号をインクリメントしません。
1.2. プレリリースバージョン
- 正式リリース前の、アルファ版、ベータ版、リリース候補版などには、ハイフンに続けて識別子を付加します。
- 例:
1.0.0-alpha.12.1.0-beta.23.0.0-rc.1
2. Gitタグによるバージョンマーキング
- ルール: 全てのリリース(プレリリースを含む)時には、対応するコミットに対して、バージョン番号を示すGitタグを必ず付与します。
- フォーマット: バージョン番号の先頭に
vを付けます。(例:v1.0.0,v1.2.3-alpha.1) - 目的:
- 特定のバージョンが、どの時点のコードに対応するのかを明確にマークします。
- 後から特定のバージョンのコードを簡単にチェックアウトできるようにします。
3. バージョン番号の管理場所
- ライブラリやアプリケーションのバージョン番号は、それぞれの技術スタックに適した場所で一元管理します。
- 例:
- .NET:
.csprojファイル内の<Version>タグ - Node.js:
package.jsonファイル内のversionフィールド - Python:
pyproject.toml内のversionキー
- .NET: