From 544d8af230a6b01cc4dfdf3e08d5e1b11e951320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 5 Dec 2021 11:52:17 +0100 Subject: [PATCH] Enhancement: Restore auto-merge of dependabot pull requests --- .github/CONTRIBUTING.md | 1 + .github/settings.yml | 4 -- .github/workflows/integrate.yaml | 89 ------------------------------ .github/workflows/merge.yaml | 92 ++++++++++++++++++++++++++++++++ README.md | 1 + 5 files changed, 94 insertions(+), 93 deletions(-) create mode 100644 .github/workflows/merge.yaml diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index cc0447c..6a730e1 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -5,6 +5,7 @@ We are using [GitHub Actions](https://github.com/features/actions) as a continuo For details, take a look at the following workflow configuration files: - [`workflows/integrate.yaml`](workflows/integrate.yaml) +- [`workflows/merge.yaml`](workflows/merge.yaml) - [`workflows/triage.yaml`](workflows/triage.yaml) ## Coding Standards diff --git a/.github/settings.yml b/.github/settings.yml index 9b33e60..fee26bd 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -44,10 +44,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 56a9d83..a9a3fb3 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -24,92 +24,3 @@ jobs: config_file: ".yamllint.yaml" file_or_dir: "." strict: true - - merge: - name: "Merge" - - runs-on: "ubuntu-latest" - - needs: - - "coding-standards" - - 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, '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 reviewers = [ - "ergebnis-bot", - ] - - await github.issues.addAssignees({ - assignees: reviewers, - issue_number: pullRequest.number, - owner: repository.owner, - repo: repository.repo, - }) - - - name: "Approve pull request" - uses: "actions/github-script@v4.0.2" - if: "github.actor != 'ergebnis-bot'" - 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 0000000..d208db4 --- /dev/null +++ b/.github/workflows/merge.yaml @@ -0,0 +1,92 @@ +# 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, 'github-actions(deps)') + ) + + steps: + - name: "Request review from @ergebnis-bot" + uses: "actions/github-script@v5" + 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.rest.pulls.requestReviewers({ + owner: repository.owner, + repo: repository.repo, + pull_number: pullRequest.number, + reviewers: reviewers, + }) + + - name: "Assign @ergebnis-bot" + uses: "actions/github-script@v5" + 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.rest.issues.addAssignees({ + owner: repository.owner, + repo: repository.repo, + assignees: assignees, + issue_number: pullRequest.number + }) + + - name: "Approve pull request" + uses: "actions/github-script@v5" + with: + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" + script: | + const pullRequest = context.payload.workflow_run.pull_requests[0] + const repository = context.repo + + await github.rest.pulls.createReview({ + event: "APPROVE", + owner: repository.owner, + repo: repository.repo, + pull_number: pullRequest.number, + }) + + - name: "Merge pull request" + uses: "actions/github-script@v5" + with: + github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}" + script: | + const pullRequest = context.payload.workflow_run.pull_requests[0] + const repository = context.repo + + await github.rest.pulls.merge({ + merge_method: "merge", + owner: repository.owner, + pull_number: pullRequest.number, + repo: repository.repo, + }) diff --git a/README.md b/README.md index 4342d71..0205699 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # .github [![Integrate](https://github.com/ergebnis/.github/workflows/Integrate/badge.svg?branch=main)](https://github.com/ergebnis/.github/actions) +[![Merge](https://github.com/ergebnis/.github/workflows/Merge/badge.svg?branch=main)](https://github.com/ergebnis/.github/actions) Provides community health files for the [@ergebnis](https://github.com/ergebnis) organization.