name: Dependabot auto-merge on: pull_request_target permissions: pull-requests: write contents: write jobs: dependabot: runs-on: ubuntu-latest if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }} steps: - name: Dependabot metadata id: metadata uses: dependabot/fetch-metadata@v2 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Enable auto-merge for Dependabot PRs if: ${{ steps.metadata.outputs.update-type != 'version-update:semver-major' }} uses: actions/github-script@v7 with: github-token: "${{ secrets.GITHUB_TOKEN }}" script: | const getPullRequestIdQuery = `query GetPullRequestId($owner: String!, $repo: String!, $pullRequestNumber: Int!) { repository(owner: $owner, name: $repo) { pullRequest(number: $pullRequestNumber) { id } } }` const repoInfo = { owner: context.repo.owner, repo: context.repo.repo, pullRequestNumber: context.issue.number, } const response = await github.graphql(getPullRequestIdQuery, repoInfo) await github.rest.pulls.createReview({ pull_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, event: 'APPROVE', }) const enableAutoMergeQuery = `mutation ($pullRequestId: ID!, $mergeMethod: PullRequestMergeMethod!) { enablePullRequestAutoMerge(input: { pullRequestId: $pullRequestId, mergeMethod: $mergeMethod }) { pullRequest { autoMergeRequest { enabledAt enabledBy { login } } } } }` const data = { pullRequestId: response.repository.pullRequest.id, mergeMethod: 'MERGE', } await github.graphql(enableAutoMergeQuery, data)