👏

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