release-drafterを使ってバージョン番号を表示する
この記事は株式会社ガラパゴス(有志) Advent Calendar 2024
の2日目です2️⃣
こんにちは。バックエンドエンジニアの大田です。
今回はGitHubのReeaseを自動で作成してくれるrelease-drafterを使ってバージョン番号を表示するCDを構築してみたので、その顛末を書いていこうと思います😀
結論
- release-drafter便利。感謝🙏
- CDは構築時に色々必要だけど、あると本当に便利。
経緯
とあるプロダクトで、バージョン番号を画面に表示したいという要件が出てきました。
そのプロダクトはそれまでバージョン番号の管理を行っていなかったので、まずはそこからになります。
デプロイ時にバージョン番号を手動で書き込むような運用はミスに繋がる上に面倒なので、この機会にCDも構築することにしました。
別プロジェクトで利用しているrelease-drafterがバージョン番号を管理するうえでもCDでバージョン番号を自動的に書き込むうえでも便利であることは知っていたため、こちらを導入することにしました。
筆者としては1からrelease-drafterを導入するのは初めてだったので、改めて使い方などを調査していきました。
(参考にした別プロジェクトではバージョン番号を自動的に書き込むような要件はなかったため、そのあたりを考慮する必要もありました。)
実施したこと
- CDを実現するためのワークフロー追加
workflows/deploy.yml
- デプロイ処理を共通化したワークフロー追加
workflows/push.yml
- Release作成を自動化するためのワークフロー追加
workflows/release-drafter.yml
- release-drafterの設定ファイル作成
release-drafter.ytml
release-drafterの設定
設定については公式ドキュメントを参照してください😀
個人的に重宝している設定が replacers
で、Release内のチケット番号を管理システムのURLに置換しています👍️
release-drafter.yml
replacers:
- search: '/PROJECT-(\d+)/g'
replace: '[PROJECT-$1](https://example.jp/project/PROJECT-$1)'
開発環境
いきなり本番環境で試すわけにはいかないので、開発環境でバージョン番号を書き込むことから始めました。
こちらはReleaseで管理しませんので、 github.sha
の値を書き込んでコミットを特定できるようにしました。
GitHub Actions の設定で ${{ github.sha }}
を使えば参照できますね😀
(ちなみにトリガーは開発ブランチへのpushです。)
workflows/deploy.yml
jobs:
deploy-dev:
# デプロイを共通化したワークフローに環境に応じた情報を渡す
uses: ./.github/workflows/push.yml
with:
environment: dev
ref: ${{ github.ref }}
version: ${{ github.sha }}
本番環境
本番環境では、Releaseを公開(publish)したタイミングでデプロイするように設定しました。
publishしたタイミングでタグが打たれてそれが github.ref_name
で参照できるので、それを使います。
workflows/deploy.yml
jobs:
deploy-prod:
uses: ./.github/workflows/push.yml
with:
environment: prod
ref: ${{ github.ref }}
version: ${{ github.ref_name }}
まとめ
release-drafterは本当に便利で、手でやろうとすると辛いことを自動でやってくれるまさにソフトウェアの鑑みたいな存在だなと思いました😀
まだ設定したばかりなので不要なマージが一覧に出てきたりする状態ですが、使いながら設定や運用をブラッシュアップしていこうと思います。
実際には開発環境に本番環境に近いバージョン番号を付ける試みなどをして失敗したり紆余曲折ありましたが、このあたりはプロジェクトによってブランチワークやルールが違う部分もあるので構築する人の手腕にかかっている部分になるんでしょうね🤔
こういった裏方部分はうまく構築できていると全体の効率が上がってくると思うので、引き続き精進しようと思いました。
Discussion