GitのcommitコメントをConventional Commitsに従わせるGitHubActionsとpre-commitの設定
Git等のコミットメッセージの書き方のルールに、
「Conventional Commits」という仕様があります。
Conventional Commits
https://www.conventionalcommits.org/ja/v1.0.0/
本エントリでは、
このルールに従っているかをチェックする仕組みを、
GitHubActionsとpre-commitで設定する手順を示します。
GitHubActionsでの設定
次のActionを使うと、
GitHubActionsでConventional Commitに従っているかをチェックできます。
Conventional Commits GitHub Action | GitHub
https://github.com/webiny/action-conventional-commits
次のような、GiHubActionsのワークフローで設定出来ます。
.github/workflows/ci.yaml
name: workflow
on:
- pull_request
jobs:
unit_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: webiny/action-conventional-commits@v1.3.0
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
既定で利用できる型は、次の通りです。
feat,fix,docs,style,refactor,test,build,perf,ci,chore,revert,merge,wip
利用する型を指定したい場合は、
次のようにallowed-commit-types
を指定します。
name: workflow
on:
- pull_request
jobs:
unit_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: webiny/action-conventional-commits@v1.3.0
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
allowed-commit-types: "feat,fix"
Conventional Commits GitHub ActionのREADME.mdに、
チェック結果の画面イメージが載っていますが、
コミット毎メッセージ一覧に対して、
OK/NGがアイコン表示されていて見やすいと思いました。
https://github.com/webiny/action-conventional-commits/blob/master/README.md
pre-commitでの設定
手元のPCで作業している段階でチェックした方が手戻りも少ないので、
次はpre-commitでもチェックすること考えます。
次のHookを使うと、
pre-commitでもConventional Commitに従っているかをチェックできます。
conventional-pre-commit | GitHub
https://github.com/compilerla/conventional-pre-commit
次のようなpre-commitの設定で適用できます。
.pre-commit-config.yaml
repos:
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.4.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
default_install_hook_types:
- pre-commit
- commit-msg
minimum_pre_commit_version: '2.18.0'
既定で利用できる型は、次の通りです。
feat,fix,docs,style,refactor,test,build,perf,ci,chore,revert
利用する型を指定したい場合は、次のようにargs
に指定します。
repos:
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.4.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
args: [feat, fix]
default_install_hook_types:
- pre-commit
- commit-msg
minimum_pre_commit_version: '2.18.0'
これ以外に、次のような点を設定することもできます。
- スコープを必須にしたり(–force-scope)
- スコープを限定したり(–scopes)
- Gitの自動コメント(AutoSquash, Maerge等)に対しても規約を適用するか(–strict)
以上。