【Git】リリース自動化ツール 〜 release-please / 入門編 〜

◾️はじめに

https://dk521123.hatenablog.com/entry/2025/03/31/153442

の続き。

今回は、リリース自動化ツールがどんなツールがあるのかと
その中のRelease Please (release-please)について触れる

目次

【1】リリース自動化ツール
 1)Release Please (release-please)
 2)Semantic Release (semantic-release)
【2】release-pleaseの導入
 Step1:Githubの設定
 Step2:Github Actionsを追加(v1.0.0 から始まる場合)
【3】使い方
【4】Tips
 1)v0.0.1から始めるには
 2)Version変更したい場合

【1】リリース自動化ツール

* ツール候補としては、以下の通り。

1)Release Please (release-please)
2)Semantic Release (semantic-release)

 => 今回は、「1)Release Please (release-please)」を扱う
 => 「2)Semantic Release (semantic-release)」は軽く触ったけど
  エラーがあったので、、、
特徴項目 Release Please Semantic Release
バージョンの決め方 最新のタグ + コミット内容から計算 コミットメッセージの規則に基づいて自動決定
コミットメッセージの制約 必須ではない(ただし Conventional Commits を推奨) Conventional Commits 準拠が必須
プルリク型か、自動リリース型 PRベース:release-please が PR を作成 自動リリース型:マージ後すぐにリリース
GitHub Releases の作成 可能(自動でリリースノートを生成) 可能(豊富な設定オプションあり)
GitHub Actionsとの相性 非常に良い(公式Actionあり) 非常に良い(npm script や公式Actionあり)
対応プロジェクト構成 MonoRepo対応・複数パッケージ対応 MonoRepo対応(構成がやや複雑)
初学者向けか やや扱いやすい・GitHubフローに馴染みやすい 学習コストが高め(ルール厳守が必要)

1)Release Please (release-please)

* Google製の自動リリースPR生成ツール
* 自動でタグ付け&GitHub Release作成
* 複数パッケージ対応(MonoRepo対応)

https://github.com/googleapis/release-please

2)Semantic Release (semantic-release)

* Conventional Commits に基づいてリリースを完全自動化
 + 例: feat: 新機能追加, fix: バグ修正
* npx semantic-release でリリース処理を実行
* 自動で:
 + バージョン番号決定
 + Gitタグ作成
 + リリースノート生成
 + npm/pypiなどへの公開(任意)

https://github.com/semantic-release/semantic-release

* 詳細は、以下の関連記事を参照のこと

リリース自動化ツール 〜 semantic-release / 入門編 〜
https://dk521123.hatenablog.com/entry/2025/11/28/001355

【2】release-pleaseの導入

* 以下で導入できる
~~~~
Step1:Githubの設定
Step2:Github Actionsを追加
~~~~

Step1:Githubの設定

[1] [Settings]-[Actions]-[General]まで移動し、以下を選択し、Saveボタン押下
 + Actions permissions で「Allow all actions and reusable workflows」を選択
 + Workflow permissions で「Read and write permissions」を選択
 + Workflow permissions で「Allow GitHub Actions to create and approve pull requests」を選択

Step2:Github Actionsを追加(v1.0.0 から始まる場合)

.github/workflows/release-please.yml

name: Release Please

on:
  push:
    branches:
      - main

permissions:
  contents: write
  pull-requests: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@v4
        with:
          release-type: simple
          token: ${{ secrets.GITHUB_TOKEN }}

【3】使い方

* mainブランチにPushするだけ
 => PushするとRelease・タグが更新されていく
* コメントは、Semantic Versioningに従う方がいい

Semantic Versioning / Conventional Commits
https://dk521123.hatenablog.com/entry/2025/03/31/153442

【4】Tips

1)v0.0.1から始めるには

* 以下のサイトを参考に作成した。

# ChatGPTに聞いても解決しなかった案件、、、

https://tai-kun.dev/bin/release-please-action-v4/

[1] 以下のファイルを追加
 + .config/rp-manifest.json
 + package.json
[2] .github/workflows/release-please.ymlを修正

.config/rp-manifest.json

{
  ".": "0.0.1"
}

package.json (nameは自分のリポジトリ名を指定)

{
  "name": "demo-repo",
  "version": "0.0.1"
}

.github/workflows/release-please.yml

name: Release Please

on:
  push:
    branches:
      - main

permissions:
  contents: write
  pull-requests: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@v4
        id: rp
        with:
          release-type: simple
          token: ${{ secrets.GITHUB_TOKEN }}
          manifest-file: .config/rp-manifest.json
      - name: outputs
        run: |
          echo "${{ steps.rp.outputs.releases_created }}"
          echo "${{ steps.rp.outputs.paths_released }}"
          echo "${{ steps.rp.outputs.prs_created }}"

2)Version変更したい場合

https://github.com/googleapis/release-please?tab=readme-ov-file#how-do-i-change-the-version-number

git commit --allow-empty -m "chore: release 2.0.0" -m "Release-As: 2.0.0"

関連記事

Git ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/06/29/104028
Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
リリース自動化ツール 〜 semantic-release / 入門編 〜
https://dk521123.hatenablog.com/entry/2025/11/28/001355
Semantic Versioning / Conventional Commits
https://dk521123.hatenablog.com/entry/2025/03/31/153442
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919