こんにちは、エンジニアのしているタカです。
普段はスクラムマスターや開発者としてプロダクトの開発に関わっています。
今回は、自分たちのプロダクト開発チームで行なっているNotionとGitHubを使ったリリースバージョンの管理について紹介したいと思います。
リリースバージョンとは
プロダクトの開発において、開発の区切りや本番リリースを行う段階で、プロダクトにバージョン
という一意の番号を付与することがあります。
これはプロダクト(ソフトウェア、インフラ等)のとある段階を指し示すための番号であり、この番号とリリース日などを併せて管理することで、プロダクトの実装済み機能や改修の状態が、チーム内外から分かりやすく判別できるようになります。
例. A機能はバージョン1.0.0で実装した。Bの改修はバージョン1.1.2で行っており、このタイミングでデグレードが起きたなど
このうち、本番環境にリリースしたものをリリースバージョンと呼びます。
リリースバージョンを定義することで 「◯月◯日」にリリースした機能
ではなく、バージョン1.0.0でリリースした機能
といった呼称にでき、機能やリリース時期の関係が分かりやすくなります。
リリースバージョンと管理内容
自分たちのプロダクト開発チームでは4つのリリースバージョンを定義しています。赤字の数字が対象のバージョンに対応する部分です。
これらのリリースバージョンは、リリース日と後述の情報を併せてNotionのDBで管理しています。
リリースバージョンと紐づけて管理している内容は以下の4つになります。
- Product Back Log(PBI)
- リリースノートのページURL
- コンテナのリビジョン
- リポジトリのmainブランチのタグ
1.のPBIは、Notionで別管理しているPBIのDBとの関連付けを行っています。また、2. のリリースノートのページURLは、公開したリリース情報に関するページなどのURLを載せています。
3.と4.については以降で個別に解説します。
コンテナのリビジョンを取得する
自分たちのプロダクトの環境は、Google CloudのCloud Run(コンテナ)を使用しています。
デプロイをするかサービスの構成を変更すると、コンテナごとにリビジョンと呼ばれる設定やコードバージョンのキャプチャ情報が生成されます。
このリビジョンにはコンテナのURLや環境変数などの設定に加えてデプロイしたソースコードも含まれ、GUI上から選択することでコンテナ単位で過去のリビジョンに戻すことも可能です。
Cloud runのリビジョンは、事前にインストールした gcloud CLIにプロダクト環境のプロジェクトを設定したうえで、以下のコマンドで取得できます。
$ gcloud run revisions list | grep yes
このコマンドを実行するとリージョン選択を促されます。
リージョンを選択すると存在するコンテナの現リビジョンが表示されるので、先ほどのNotionのページにコピー & ペーストしています。
リポジトリのmainブランチのタグ管理
次はGitリポジトリでmainブランチのタグ管理を行います。
通常、タグはリポジトリをcloneしてきたうえで、ローカルリポジトリのmainブランチに切り替えて打つ方法が一般的です。
$ git checkout main
$ git tag -a 1.0.2 -m '1.0.2リリース'
$ git push origin 1.0.2 (又は git push origin --tags)
ただし、ソース管理をGitHubで行なっている場合、GitHubのRelease機能
を使うことでより簡単に管理が可能です。
機能で管理するメリットはいくつかありますが、タグ打ちとRelease関連情報の記録を同時に行うことが最大のメリットかと思います。
リリース機能の特徴
* GUIでタグを打てる
* リリース情報を(commit情報を引っ張ることで)半自動生成で書けてファイル添付も出来る
* リポジトリの利用者がRelease機能のページからソースや配布ファイルを簡単にダウンロードできる
Release機能の使い方
1. リポジトリトップページのTags
をクリックします。
2. Releasesタブで、Draft a new Release ボタン
をクリックします。
3. Releaseの画面で、Choose a tag プルダウン
からタグを新規作成し、Targetブランチを指定します。今回は本番リリースのバージョンを管理するのでmainを指定します。
4. タイトルと説明を入力していきます。本文はGenerate Release Notesボタンでcommit内容が自動で入力されますので、これを使用します。
5. 併せて、Notionのリリースバージョンページへのリンクも掲載して関連付けを行います。
6.作成ボタン
を押して画面が作成されたらOKです。
おわりに
今回の内容は以上となります。
現状、本日紹介した内容はリリース作業の一部として組み込んでおり、担当者が手動で実施しています。
現時点ではまだ発展途上であり、今後管理すべき情報がもっと増えた場合はそれに応じて追加していく予定です。
なお、コンテナリビジョン取得やNotion APIを用いてのページ作成等は比較的簡単に自動化できる思うので、リリース時の負荷はまだまだ減らせると思います。
リリース内容の管理に困っている方はぜひ一度試してみてください。