バージョンの付け方 - Snak0201/fpb-wwwsite GitHub Wiki
このページについて
本番環境にコードを反映することをデプロイという。デプロイ時にReleaseとタグを作成するときのバージョニング方法を説明する。
デプロイバージョニング
タグ、リリース名は、原則セマンティックバージョニングに従う。
X.Y.z
の形式を用いる。X
はメジャーバージョン、Y
はマイナーバージョン、z
はパッチバージョンという。label
はおもに機能が完全に追加される前にデプロイするときにつかうものである。- タグ:
vX.Y.z-label.n
- リリース名:
X.Y.z
- タグ:
- リリース・デプロイを行う場合、以下のルールに従ってバージョンを上げる
- 後方互換性(後述)がない場合、メジャーバージョンを上げる
- 後方互換性があり、公開機能の追加・変更を行う場合、マイナーバージョンを上げる
- 新規のURLかは問わず、同じURLでも公開される機能が追加・変更されたかどうかで判断する
- サイトの機能一覧を追加・変更する必要がある場合、公開機能の追加・変更である
- 後方互換性があり、バグの修正や非公開機能の変更、その他の変更を行う場合、パッチバージョンを上げる
- 非公開機能は、開発者・管理者のみが使うことを意図した機能で、サイトの機能一覧に掲載はない
- 各種パッケージのアップデートも、公開機能の変更や後方互換性がない場合以外パッチバージョンとする
- 上位のバージョンが上がった場合、下位のバージョンは全て0とする
- バージョン付けは各リポジトリで固有であるため、そのリポジトリがリリースされない限りバージョンは更新されない
後方互換性
このサイトにおける後方互換性は次のすべてを満たすこととする。
- 既存のURLが変更、削除されていない
- https://hoshinonaka.net/hoges/:id のようなURLについて、hogesの部分が変更された場合は後方互換性がなく、:idの部分が変更(DB上の値によって変更)された場合は後方互換性を保っているとする
- 新しいURLを追加した場合、spec\requests\backward_compatibility_spec.rb にテストを追加し、それが壊れたことをもって後方互換性がない変更をしたと判断する
- DBの破壊的変更がない
- カラム、テーブルの名前変更、削除などは破壊的変更
ラベル
上記のバージョニングに加えて、リリース以外の場合ではタグに対してラベルを付与する。vX.Y.z-label
の形式で、その後同じラベルを複数回付与する場合は-label.1
,-label.2
という形式で付与する。α版以上の状態でデプロイした場合、サイトの機能一覧に記載して公開機能としても良い。
ラベル | alpha | beta | rc |
---|---|---|---|
正常系動作 | true | true | true |
異常系動作 | false | true | true |
テスト記載 | false | false | false |
alpha
- 正常系が動いていてデプロイした場合、α版として
-alpha
ラベルを付与する。
beta
- 正常系・異常系が動いていてデプロイした場合、β版として
-beta
ラベルを付与する。
rc
- テストの記載ができていて、動作確認のためにデプロイする場合、
-rc
ラベルを付与する。