From 78c7552ac9269ca74df143c0b166cc0c0471b05e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 9 Aug 2021 15:54:13 +0200 Subject: [PATCH] Enhancement: Restore auto-merge of dependabot pull requests --- .github/CONTRIBUTING.md | 1 + .github/settings.yml | 4 -- .github/workflows/integrate.yaml | 94 -------------------------------- .github/workflows/merge.yaml | 94 ++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 98 deletions(-) create mode 100644 .github/workflows/merge.yaml diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c6ab3be5..d856eae3 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -6,6 +6,7 @@ For details, take a look at the following workflow configuration files: - [`workflows/integrate.yaml`](workflows/integrate.yaml) - [`workflows/prune.yaml`](workflows/prune.yaml) +- [`workflows/merge.yaml`](workflows/merge.yaml) - [`workflows/release.yaml`](workflows/release.yaml) - [`workflows/renew.yaml`](workflows/renew.yaml) - [`workflows/update.yaml`](workflows/update.yaml) diff --git a/.github/settings.yml b/.github/settings.yml index 512ee58a..9814b25a 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -72,10 +72,6 @@ labels: color: "0e8a16" description: "" - - name: "merge" - color: "6f42c1" - description: "" - - name: "question" color: "cc317c" description: "" diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index 12eef585..f74e62c9 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -367,97 +367,3 @@ jobs: - name: "Run composer-normalize.phar with argument and options" run: "${{ env.COMPOSER_NORMALIZE_PHAR }} --dry-run composer.json" - - merge: - name: "Merge" - - runs-on: "ubuntu-latest" - - needs: - - "code-coverage" - - "coding-standards" - - "compile-phar" - - "dependency-analysis" - - "static-code-analysis" - - "tests" - - if: > - github.event_name == 'pull_request' && - github.event.pull_request.draft == false && ( - github.event.action == 'opened' || - github.event.action == 'reopened' || - github.event.action == 'synchronize' - ) && ( - (github.actor == 'dependabot[bot]' && startsWith(github.event.pull_request.title, 'composer(deps-dev)')) || - (github.actor == 'dependabot[bot]' && startsWith(github.event.pull_request.title, 'github-actions(deps)')) || - (github.actor == 'localheinz' && contains(github.event.pull_request.labels.*.name, 'merge')) - ) - - steps: - - name: "Request review from @ergebnis-bot" - uses: "actions/github-script@v4.0.2" - with: - github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.pull_request - const repository = context.repo - - const reviewers = [ - "ergebnis-bot", - ] - - await github.pulls.requestReviewers({ - owner: repository.owner, - pull_number: pullRequest.number, - repo: repository.repo, - reviewers: reviewers, - }) - - - name: "Assign @ergebnis-bot" - uses: "actions/github-script@v4.0.2" - with: - github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.pull_request - const repository = context.repo - - const assignees = [ - "ergebnis-bot", - ] - - await github.issues.addAssignees({ - assignees: assignees, - issue_number: pullRequest.number, - owner: repository.owner, - repo: repository.repo, - }) - - - name: "Approve pull request" - uses: "actions/github-script@v4.0.2" - with: - github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.pull_request - const repository = context.repo - - await github.pulls.createReview({ - event: "APPROVE", - owner: repository.owner, - pull_number: pullRequest.number, - repo: repository.repo, - }) - - - name: "Merge pull request" - uses: "actions/github-script@v4.0.2" - with: - github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" - script: | - const pullRequest = context.payload.pull_request - const repository = context.repo - - await github.pulls.merge({ - merge_method: "merge", - owner: repository.owner, - pull_number: pullRequest.number, - repo: repository.repo, - }) diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml new file mode 100644 index 00000000..27d07ede --- /dev/null +++ b/.github/workflows/merge.yaml @@ -0,0 +1,94 @@ +# https://docs.github.com/en/actions + +name: "Merge" + +on: # yamllint disable-line rule:truthy + workflow_run: + types: + - "completed" + workflows: + - "Integrate" + +jobs: + merge: + name: "Merge" + + runs-on: "ubuntu-latest" + + if: > + github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.conclusion == 'success' && + github.actor == 'dependabot[bot]' && ( + startsWith(github.event.workflow_run.head_commit.message, 'composer(deps-dev)') || + startsWith(github.event.workflow_run.head_commit.message, 'github-actions(deps)') + ) + + steps: + + - name: "Request review from @ergebnis-bot" + uses: "actions/github-script@v4.0.2" + with: + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" + script: | + const pullRequest = context.payload.workflow_run.pull_requests[0] + const repository = context.repo + + const reviewers = [ + "ergebnis-bot", + ] + + await github.pulls.requestReviewers({ + owner: repository.owner, + repo: repository.repo, + pull_number: pullRequest.number, + reviewers: reviewers, + }) + + - name: "Assign @ergebnis-bot" + uses: "actions/github-script@v4.0.2" + with: + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" + script: | + const pullRequest = context.payload.workflow_run.pull_requests[0] + const repository = context.repo + + const assignees = [ + "ergebnis-bot", + ] + + await github.issues.addAssignees({ + owner: repository.owner, + repo: repository.repo, + assignees: assignees, + issue_number: pullRequest.number + }) + + - name: "Approve pull request" + uses: "actions/github-script@v4.0.2" + with: + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" + script: | + const pullRequest = context.payload.workflow_run.pull_requests[0] + const repository = context.repo + + await github.pulls.createReview({ + event: "APPROVE", + owner: repository.owner, + repo: repository.repo, + pull_number: pullRequest.number, + }) + + - name: "Merge pull request" + uses: "actions/github-script@v4.0.2" + with: + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" + script: | + const pullRequest = context.payload.workflow_run.pull_requests[0] + const repository = context.repo + + await github.pulls.merge({ + merge_method: "merge", + owner: repository.owner, + pull_number: pullRequest.number, + repo: repository.repo, + })