モジュールリポジトリの リリースタグと Github Release の作成を自動化するための Action 郡
コミットメッセージを Conventional Commits specification に沿ったものにすることで、 git tag と Github Release (リリースノート付き) を作成する。 各開発者にコミットメッセージを強要するのは難しいので PR タイトルを Conventional Commits specification に沿ったものにし、 Squash merge することで実現する
Conventional Commits specificationに沿ったPRタイトルの名付けになっているかを確認する Action
name | description | ex |
---|---|---|
GITHUB_TOKEN | Githubのアクセストークン | ${{ secrets.GITHUB_TOKEN }} |
gem リポジトリのリリース PR を作成する Action。 gem は version 値を {モジュール定数}::VERSION
に書かなければならないので PR 経由が必要。
name | description | default | ex |
---|---|---|---|
base-branch | リリース対象のブランチ名 | main |
|
version-file-path | gem の version.rb のパス | ./lib/my_gem/version.rb |
|
commit-user-email | version.rb の変更コミットのユーザー Email | 41898282+github-actions[bot]@users.noreply.github.com |
|
commit-user-name | version.rb の変更コミットのユーザー名 | github-actions[bot] |
|
tag-prefix | git tag のプレフィックス | v |
ruby-gems |
name | description | ex |
---|---|---|
GITHUB_TOKEN | Githubのアクセストークン | ${{ secrets.GITHUB_TOKEN }} |
PR マージで git tag と Github Release を作成する Action。 ファイルの変更が不要なモジュールで利用する (ex. Go module)。
name | description | ex |
---|---|---|
GITHUB_TOKEN | Githubのアクセストークン | ${{ secrets.GITHUB_TOKEN }} |
Release PR のマージで git tag と Github Release を作成する Action。 ファイルの変更が必要なモジュールは PR を経由する必要があるのでこちらを利用する (ex. Ruby gem)。
name | description | default | ex |
---|---|---|---|
base-branch | リリース対象のブランチ名 | main |
name | description | ex |
---|---|---|
GITHUB_TOKEN | Githubのアクセストークン | ${{ secrets.GITHUB_TOKEN }} |
- Settings > General > Pull Requests で Allow merge commits のチェックを外し、 Allow squash merging のチェックを入れつつ Default commit message を Pull Request title に選択する
- dependabot の設定がある場合は
commit-message.prefix
にci(bundler):
などの Conventional Commits specification にそった prefix を設定する
# example
name: Create release PR
on:
workflow_dispatch:
jobs:
create_pr:
runs-on: ubuntu-latest
steps:
- uses: pinnacles/github-action-module-release/.github/actions/create-release-pr-for-gem@v1.0.0
with:
base-branch: master
version-file-path: ./lib/my_gem/version.rb
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}