
GitHub Actions で Dependabot のプルリクエストを自動的に merge する仕組みを作ってみた.ライブラリのバージョンアップ時に CI を実行して pass するなら merge して OK👌という前提で使うイメージ.
👾 .github/workflows/auto-merge-for-dependabot.yml
GitHub Actions ワークフローで特に複雑なことはしてなく,github.actor の値が dependabot[bot] だったら gh pr merge コマンドを使ってプルリクエストを自動的に merge している.
ちなみにランナーは軽量な ubuntu-slim を使うことにした.
name: Auto Merge for Dependabot on: pull_request: branches: - main permissions: pull-requests: write contents: write jobs: auto-merge: runs-on: ubuntu-slim if: github.actor == 'dependabot[bot]' env: PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Run auto-merge run: gh pr merge --merge --auto ${PULL_REQUEST_URL}
GitHub リポジトリ設定
次に GitHub リポジトリ側で2つの設定をしておく必要がある.
まず1つ目として Allow auto-merge を有効化しておく.有効化をしないと GitHub Actions で gh pr merge コマンドを実行したときに GraphQL: Pull request Auto merge is not allowed for this repository (enablePullRequestAutoMerge) というエラーが出てしまう.
Run gh pr merge --merge --auto ${PULL_REQUEST_URL}
GraphQL: Pull request Auto merge is not allowed for this repository (enablePullRequestAutoMerge)
Error: Process completed with exit code 1.

次に2つ目として Branch protection rules で Require status checks to pass before merging を設定しておく.そのときに pass を必須にする GitHub Actions ワークフローを Status checks that are required に設定しておく.

動作確認
Dependabot で Terraform AWS Provider をバージョンアップしたときに HCP Terraform (Terraform Cloud) で実行する plan と GitHub Actions で実行する Lint (TFLint と Trivy) を pass したらプルリクエストを自動的に merge できるようになった❗️
