👏
Pull Requestでコミットメッセージに特定の単語が含まれるか検知するGitHub Actions
概要
コミットログが汚いままマージするのを避けるために、特定のNGワードを設定して検知するCIをGitHub Actionsで作成しました。
(サンプルコードがありそうでなかったので記事を作成しました)
コード
コミットメッセージにtmp
が含まれる場合検知するWorkflowです。
matrix.check_word
に検知する単語を指定することで使用できます。
name: Validate commit log
on:
pull_request:
types:
- opened
- synchronize
- reopened
jobs:
validate:
name: validate commit log
runs-on: ubuntu-latest
strategy:
matrix:
check_word: ['tmp']
steps:
- name: Check out codes
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Check ${{matrix.check_word}} in commit log
run: |
word="${{ env.check_word }}"
commits=$(git log --no-merges --pretty=format:"%s" origin/${{ env.base_ref }}...origin/${{ env.head_ref }})
for commit in $commits; do
if echo "$commit" | grep -q $word; then
echo "${{ env.check_word }} found in commit: $commit"
exit 1
fi
done
env:
head_ref: ${{ github.head_ref }}
base_ref: ${{ github.base_ref }}
check_word: ${{ matrix.check_word }}
Discussion