GitHub Actions(release-please-action)でバージョン管理をやってみた
歴史シミュレーションゲーム好きのくろすけです!
ずっとサボっていた Terraform カスタムモジュールのバージョン管理をしないといけない季節だなと思い、リポジトリの整備から始めました。
その際にバージョン管理を Github Actions で自動化してくれる release-please-action なるものがあることを知り、使用してみたので簡単にまとめてみます。
概要
release-please-action は Google が開発した OSS で、Conventional Commits のコミットメッセージを解析して自動でバージョンを決定し、Release PR の作成・タグ付け・GitHub Release の作成までを自動化してくれます。
やってみた
1. ワークフローファイルの作成
.github/workflows/release.yml を作成します。
# .github/workflows/release.yml
name: Release
on:
push:
branches: [main]
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: googleapis/release-please-action@v4
with:
release-type: terraform-module
release-type: terraform-module を指定することで、Terraform モジュール向けの設定が適用されます。
permissions の設定が重要で、contents: write と pull-requests: write の両方が必要です。これを忘れると後述のエラーが発生します。
2. 初期バージョンの設定
初期バージョンはデフォルトでは、v1.0.0 から始まります。
今回のモジュールはこれから開発を始めるため、リポジトリルートに release-please-config.json を作成して初期バージョン v0.1.0 としました。
{
"initial-version": "0.1.0"
}
release-please-config.json のデフォルトの読み込みパスはリポジトリルート(release-please-config.json)です。別の場所に置きたい場合は release.yml の config-file で明示的に指定できます。
- uses: googleapis/release-please-action@v4
with:
release-type: terraform-module
config-file: .github/release-please-config.json # パスを変更する場合
initial-version は release-please-action v4 のアクション入力(with の引数)として廃止されており、release-please-config.json に記述する必要があります。
3. ハマりポイント:PR 作成権限エラー
ワークフローを実行すると以下のエラーが発生しました。
Error: release-please failed: GitHub Actions is not permitted to create or approve pull requests.
GitHub リポジトリ側の設定変更が必要です。
Settings > Actions > General > Workflow permissions で以下を設定します。
Read and write permissionsを選択Allow GitHub Actions to create and approve pull requestsにチェック
4. 動作確認
設定完了後、main に Conventional Commits 形式でコミットを push すると Release PR が自動作成されます。
feat!: xxxx → MAJOR バージョンアップ
feat: xxxx → MINOR バージョンアップ
fix: xxxx → PATCH バージョンアップ



Release PR をマージすると Git タグと GitHub Release が自動作成されます。

※変更漏れがあった場合は、Release PR をマージする前に追加で main に push するだけです。release-please が既存の Release PR を自動更新してくれます。
あとがき
release-please-action は簡単に導入でき、バージョン管理を自動化してくれるので非常に便利です。
一度設定してしまえば、あとはコミットメッセージを Conventional Commits 形式で書くだけで自動的にバージョン管理されるので非常に便利です。
バージョン管理を怠けていた自分にはありがたい...
これで自分用の Terraform モジュールをバージョン管理していこうと思います!
以上、くろすけでした!







