Skip to content

Commit

Permalink
Merge pull request #64 from ergebnis/feature/merge-pull-request
Browse files Browse the repository at this point in the history
Enhancement: Add `github/merge-pull-request` action
  • Loading branch information
localheinz authored Jan 24, 2022
2 parents 816ae9f + 6abb008 commit 6641461
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 11 deletions.
12 changes: 1 addition & 11 deletions .github/workflows/merge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,6 @@ jobs:
github-token: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"

- name: "Merge pull request"
uses: "actions/github-script@v5"
uses: "./.github/actions/github/merge-pull-request"
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,
});
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ For a full diff see [`1.2.1...main`][1.2.1...main].

- Added composite action `github/add-assignee-to-pull-request` ([#59]), by [@localheinz]
- Added composite action `github/approve-pull-request` ([#60]), by [@localheinz]
- Added composite action `github/merge-pull-request` ([#64]), by [@localheinz]

## [`1.2.1`][1.2.1]

Expand Down Expand Up @@ -62,5 +63,6 @@ For a full diff see [`1.0.0...main`][1.0.0...main].
[#54]: https://github.com/ergebnis/.github/pull/54
[#59]: https://github.com/ergebnis/.github/pull/59
[#60]: https://github.com/ergebnis/.github/pull/60
[#64]: https://github.com/ergebnis/.github/pull/64

[@localheinz]: https://github.com/localheinz
66 changes: 66 additions & 0 deletions actions/github/merge-pull-request/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-run-steps-actions
# https://docs.github.com/en/rest/reference/pulls#merge-a-pull-request
# https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#pull_request
# https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_run

name: "Merge pull request"

description: "Merges a pull request"

inputs:
github-token:
description: "GitHub token of a user with permission to merge a pull request"
required: true
merge-method:
default: "merge"
description: "Which merge method to use, one \"merge\", \"rebase\", \"squash\""
required: true

runs:
using: "composite"

steps:
- name: "Determine pull request number"
uses: "actions/github-script@v5"
with:
github-token: "${{ inputs.github-token }}"
script: |
if (context.eventName == 'pull_request') {
core.exportVariable("PULL_REQUEST_NUMBER", context.payload.pull_request.number);
return;
}
if (context.eventName == 'workflow_run') {
core.exportVariable("PULL_REQUEST_NUMBER", context.payload.workflow_run.pull_requests[0].number);
return;
}
core.setFailed(`Unable to determine the pull request number for event "${context.eventName}"`);
- name: "Merge pull request"
uses: "actions/github-script@v5"
env:
MERGE_METHOD: "${{ inputs.merge-method }}"
with:
github-token: "${{ inputs.github-token }}"
script: |
if (!process.env.PULL_REQUEST_NUMBER) {
core.setFailed("The environment variable PULL_REQUEST_NUMBER is not defined.")
return;
}
try {
await github.rest.pulls.merge({
merge_method: process.env.MERGE_METHOD,
owner: context.repo.owner,
pull_number: process.env.PULL_REQUEST_NUMBER,
repo: context.repo.repo,
});
} catch (error) {
core.setFailed(error.message);
}

0 comments on commit 6641461

Please sign in to comment.