refactor(actions): remove duplicate Dependabot merge workflow
This commit is contained in:
1 parent
92c3493b12
commit
6d0b8bfcb6
1 file changed
-95
@@ -1,95 +0,0 @@
|
|||||||
name: Auto-merge dependency updates
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_run:
|
|
||||||
workflows:
|
|
||||||
- CI
|
|
||||||
types:
|
|
||||||
- completed
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
automerge:
|
|
||||||
if: >
|
|
||||||
github.event.workflow_run.conclusion == 'success' &&
|
|
||||||
github.event.workflow_run.event == 'pull_request'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Auto-merge Dependabot dependency PRs
|
|
||||||
uses: actions/github-script@v9
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
const pullRequests = context.payload.workflow_run.pull_requests || [];
|
|
||||||
|
|
||||||
if (pullRequests.length === 0) {
|
|
||||||
core.info('No pull requests were attached to this workflow run.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data: repo } = await github.rest.repos.get({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
});
|
|
||||||
|
|
||||||
const mergeMethod =
|
|
||||||
repo.allow_merge_commit ? 'merge' :
|
|
||||||
repo.allow_squash_merge ? 'squash' :
|
|
||||||
repo.allow_rebase_merge ? 'rebase' :
|
|
||||||
null;
|
|
||||||
|
|
||||||
if (!mergeMethod) {
|
|
||||||
core.setFailed('This repository does not allow merge, squash, or rebase merges.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const prRef of pullRequests) {
|
|
||||||
const { data: pr } = await github.rest.pulls.get({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
pull_number: prRef.number,
|
|
||||||
});
|
|
||||||
|
|
||||||
const author = pr.user?.login || '';
|
|
||||||
if (!author.includes('dependabot')) {
|
|
||||||
core.info(`#${pr.number} skipped: author is ${pr.user?.login}.`);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pr.draft) {
|
|
||||||
core.info(`#${pr.number} skipped: PR is a draft.`);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const labels = pr.labels.map((label) => label.name);
|
|
||||||
if (!labels.includes('dependencies')) {
|
|
||||||
core.info(`#${pr.number} skipped: missing dependencies label.`);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (labels.includes('automerge:disabled')) {
|
|
||||||
core.info(`#${pr.number} skipped: automerge disabled by label.`);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const reviewDecision = pr.requested_reviewers?.length || pr.requested_teams?.length;
|
|
||||||
if (reviewDecision) {
|
|
||||||
core.info(`#${pr.number} skipped: PR is still waiting for requested review.`);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
await github.rest.pulls.merge({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
pull_number: pr.number,
|
|
||||||
merge_method: mergeMethod,
|
|
||||||
});
|
|
||||||
core.info(`#${pr.number} merged successfully with '${mergeMethod}'.`);
|
|
||||||
} catch (error) {
|
|
||||||
core.warning(`#${pr.number} was not merged automatically: ${error.message}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in new issue
Block a user