github automerge

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Василий Толстов 2021-10-27 15:23:26 +03:00
parent 93ce60f59c
commit 10419bc74a

View File

@ -1,66 +1,24 @@
name: "prautomerge" name: "prautomerge"
on: on: pull_request_target
workflow_run:
workflows: ["prbuild"]
types:
- completed
permissions: permissions:
contents: write
pull-requests: write pull-requests: write
contents: write
jobs: jobs:
Dependabot-Automerge: dependabot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Contains workaround to execute if dependabot updates the PR by checking for the base branch in the linked PR if: ${{ github.actor == 'dependabot[bot]' }}
# The the github.event.workflow_run.event value is 'push' and not 'pull_request'
# dont work with multiple workflows when last returns success
if: >-
github.event.workflow_run.conclusion == 'success'
&& github.actor == 'dependabot[bot]'
&& github.event.sender.login == 'dependabot[bot]'
&& github.event.sender.type == 'Bot'
&& (github.event.workflow_run.event == 'pull_request'
|| (github.event.workflow_run.event == 'push' && github.event.workflow_run.pull_requests[0].base.ref == github.event.repository.default_branch ))
steps: steps:
- name: Approve Changes and Merge changes if label 'dependencies' is set - name: Dependabot metadata
uses: actions/github-script@v4 id: metadata
uses: dependabot/fetch-metadata@v1.1.1
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: "${{ secrets.GITHUB_TOKEN }}"
script: | - name: Enable auto-merge for Dependabot PRs
console.log(context.payload.workflow_run); if: ${{contains(steps.metadata.outputs.dependency-names, 'go.unistack.org')}}
run: gh pr merge --auto --merge "$PR_URL"
var labelNames = await github.paginate( env:
github.issues.listLabelsOnIssue, PR_URL: ${{github.event.pull_request.html_url}}
{ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
repo: context.repo.repo,
owner: context.repo.owner,
issue_number: context.payload.workflow_run.pull_requests[0].number,
},
(response) => response.data.map(
(label) => label.name
)
);
console.log(labelNames);
if (labelNames.includes('dependencies')) {
console.log('Found label');
await github.pulls.createReview({
repo: context.repo.repo,
owner: context.repo.owner,
pull_number: context.payload.workflow_run.pull_requests[0].number,
event: 'APPROVE'
});
console.log('Approved PR');
await github.pulls.merge({
repo: context.repo.repo,
owner: context.repo.owner,
pull_number: context.payload.workflow_run.pull_requests[0].number,
});
console.log('Merged PR');
}