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するの忘れそう。

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

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