From 4c6d73a92934cbfe38c5240b4f1910172dc1e6f5 Mon Sep 17 00:00:00 2001 From: Salman Mitha Date: Wed, 11 Nov 2020 19:31:57 +0530 Subject: [PATCH] chore: automerge only for prs (#41) --- .github/dependabot.js | 45 ++++++++++++++++++++++++++++++++++++ .github/workflows/nodejs.yml | 16 ++++--------- 2 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 .github/dependabot.js diff --git a/.github/dependabot.js b/.github/dependabot.js new file mode 100644 index 0000000..bdde944 --- /dev/null +++ b/.github/dependabot.js @@ -0,0 +1,45 @@ +'use strict' + +const getMergeMethod = (repo) => { + if (repo.allow_merge_commit) return 'merge' + if (repo.allow_squash_merge) return 'squash' + return 'rebase' +} + +module.exports = async ({ + github, + context +}) => { + const owner = context.payload.repository.owner.login + const repo = context.payload.repository.name + const prNumber = context.payload.pull_request.number + + const { + data: pr + } = await github.pulls.get({ + owner, + repo, + pull_number: prNumber + }) + + const isDependabotOwner = pr.user.login === 'dependabot[bot]' + const isMergable = pr.mergeable + + if (!isDependabotOwner || !isMergable) { + return console.log('Unable to merge', isDependabotOwner, isMergable) + } + + await github.pulls.createReview({ + owner, + repo, + pull_number: prNumber, + event: 'APPROVE' + }) + + await github.pulls.merge({ + owner, + repo, + pull_number: prNumber, + merge_method: getMergeMethod(pr.head.repo) + }) +} diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index fa09079..273f921 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -32,20 +32,12 @@ jobs: needs: test runs-on: ubuntu-latest steps: + - uses: actions/checkout@v2 - name: Dependabot Auto Merge uses: actions/github-script@v3 - if: ${{ github.actor == 'dependabot[bot]' }} + if: ${{ github.actor == 'dependabot[bot]' && github.event_name == 'pull_request' }} with: github-token: ${{secrets.github_token}} script: | - github.pulls.createReview({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - pull_number: context.payload.pull_request.number, - event: 'APPROVE' - }) - github.pulls.merge({ - owner: context.payload.repository.owner.login, - repo: context.payload.repository.name, - pull_number: context.payload.pull_request.number - }) + const automerge = require(`${process.env.GITHUB_WORKSPACE}/.github/dependabot.js`) + await automerge({github, context})