releaseとは?
releaseとは、ユーザーに利用可能にされる、特定のバージョン管理されたソフトウェアのバージョンであり、多くの場合、何が変わったかを説明するノートを伴います。
releaseはソフトウェアデリバリーのユーザー向けのマイルストーンです。buildが技術的な出力であり、deploymentがインフラ上の操作であるのに対し、releaseは世界が新しい機能を受け取る瞬間です。パッケージ化され、名前が付けられ、文書化されたものです。
releaseとは何か
releaseは変更の集合を名前付きでバージョン管理された単位にまとめ、ユーザーに利用可能にします。通常はバージョン番号、ソース管理上のタグ、出荷されるartifact、そして変更を説明するchangelogを伴います。releaseは、"これがユーザーの動かしているものだ"と指し示せるものです。
releaseがどのようにバージョン管理されるか
ほとんどのチームはセマンティックバージョニングを使います。2.4.1のようなバージョンは変更の種類を符号化しています。最初の数字の増加は互換性を壊す変更を、2番目は機能の追加を、3番目はバグ修正を示します。バージョン番号により、ユーザーや依存するシステムは互換性を一目で推論できます。
release対deployment
deployはコードをインフラに配置すること、releaseはそれをユーザーに利用可能にすることです。新機能をflagの背後に隠したbuildを本番へdeployし、数日後にflagを有効化して"release"することもでき、その場合新たなdeploymentは不要です。概念を分けておくことで、リスクとタイミングを制御できます。
実例
あるチームがcommit履歴をv3.0.0としてタグ付けし、releaseのartifactをbuildし、新しいダッシュボードと互換性を壊すAPIの変更を記したchangelogを公開し、それを告知します。ユーザーは、何が変わったか、そしてメジャーバージョンの増加が互換性を壊す変更を示していることを正確に把握してアップグレードします。
なぜreleaseが重要か
releaseは変更に名前、バージョン、記録を与えます。それによりサポートが容易になり ("どのreleaseをお使いですか?")、ロールバックが明確になり (前のreleaseに戻す)、コミュニケーションが誠実になります (changelog)。release作成の自動化は、バージョンを切る処理から手作業と人的ミスを取り除きます。
重要なポイント
- releaseとは、ユーザーに利用可能にされた、名前付きでバージョン管理された変更の集合です。
- セマンティックバージョニングは各releaseの性質を伝えます。
- releaseはdeployとは別物であり、別々に制御できます。