Github ActionからPull Requestを作るCI(メモ)、いくつかのパターンを踏んでも問題なさそうなのと、簡単な確認テストも設定できたので、そのまま自動でマージしてしまうことにした。
自動マージは peter-evans/enable-pull-request-automerge@v3
を使えば良い。
- name: Auto-merge if bot PR and CI passes
if: github.event.pull_request.head.ref == 'auto-update-related-posts' && contains(github.event.pull_request.title, '🤖 Auto-update related posts')
uses: peter-evans/enable-pull-request-automerge@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
pull-request-number: ${{ github.event.pull_request.number }}
merge-method: squash
条件に、"auto-update-related-posts"
イベントかつ固定のPRタイトルを設定している。前者だけでいい気がするけど、いろんなExampleを見ると、こうしている人が多かった。
で、自動PR側を直す必要があったので備忘メモ
1. 自動PRのトークンをPATに変える
PRとマージの無限ループを防ぐため、例えば自動PRのトークンが secrets.GITHUB_TOKEN
の場合は、自動マージはスキップされるようになっている。いくつか対応方法はあるが、自動PRのトークンをPATを使うようにした。PATの設定の仕方は、 Settings > Developer Settings > Personal access token > Fine-grained personal access tokens のページで、以下の設定のトークンを作成する。
- (任意)対象のrepositoryの設定
- Contents: Read & Write
- Pull requests: Read & Write
2. 自動マージに反応しないようにする
マージを自動化しようがしまいが、自分で送ったPRのマージに反応しないようにしたい。
jobs:
update-related-posts:
runs-on: ubuntu-latest
if: |
!contains(github.event.head_commit.message, '🤖 Update related posts automatically') &&
github.event.head_commit.author.email != 'github-actions[bot]@users.noreply.github.com'
コミットメッセージが自動マージの場合はジョブが走らないようにしている。
以上により、無事、勝手にマージされた。前も書いたけど、pullするの忘れそう。

自動マージステップが実行されたログ