こんにちは、エンジニアのしているタカです。

普段はスクラムマスターや開発者としてプロダクトの開発に関わっています。

今回は、自分たちのプロダクト開発チームで行なっているNotionとGitHubを使ったリリースバージョンの管理について紹介したいと思います。

リリースバージョンとは

プロダクトの開発において、開発の区切りや本番リリースを行う段階で、プロダクトにバージョンという一意の番号を付与することがあります。

これはプロダクト(ソフトウェア、インフラ等)のとある段階を指し示すための番号であり、この番号とリリース日などを併せて管理することで、プロダクトの実装済み機能や改修の状態が、チーム内外から分かりやすく判別できるようになります。

例. A機能はバージョン1.0.0で実装した。Bの改修はバージョン1.1.2で行っており、このタイミングでデグレードが起きたなど

このうち、本番環境にリリースしたものをリリースバージョンと呼びます。

リリースバージョンを定義することで 「◯月◯日」にリリースした機能ではなく、バージョン1.0.0でリリースした機能といった呼称にでき、機能やリリース時期の関係が分かりやすくなります。

リリースバージョンと管理内容

自分たちのプロダクト開発チームでは4つのリリースバージョンを定義しています。赤字の数字が対象のバージョンに対応する部分です。

これらのリリースバージョンは、リリース日と後述の情報を併せてNotionのDBで管理しています。

リリースバージョンのDB. リリース日はグレーアウトしています
ページの内容

リリースバージョンと紐づけて管理している内容は以下の4つになります。

  1. Product Back Log(PBI)
  2. リリースノートのページURL
  3. コンテナのリビジョン
  4. リポジトリの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を用いてのページ作成等は比較的簡単に自動化できる思うので、リリース時の負荷はまだまだ減らせると思います。

リリース内容の管理に困っている方はぜひ一度試してみてください。

SHARE

  • facebook
  • twitter

SQRIPTER

AGEST Engineers

AGEST

記事一覧

AGESTのエンジニアが情報発信してます!

株式会社AGEST

Sqriptsはシステム開発における品質(Quality)を中心に、エンジニアが”理解しやすい”Scriptに変換して情報発信するメディアです

  • 新規登録/ログイン
  • 株式会社AGEST