mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-07 23:31:20 +00:00
71 lines
2.1 KiB
YAML
71 lines
2.1 KiB
YAML
name: Propagate auto-merge label to backports
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened]
|
|
|
|
jobs:
|
|
propagate-label:
|
|
runs-on: ubuntu-latest
|
|
|
|
permissions:
|
|
pull-requests: write
|
|
issues: write
|
|
|
|
steps:
|
|
- name: Detect backport and original PR (metadata)
|
|
id: extract
|
|
uses: actions/github-script@v8
|
|
with:
|
|
script: |
|
|
const pr = context.payload.pull_request;
|
|
const base = pr.base.ref;
|
|
if (!/^version-(15|16)-hotfix$/.test(base)) {
|
|
core.setOutput('is_backport', 'false');
|
|
return;
|
|
}
|
|
|
|
const isMergify = pr.user && pr.user.login === 'mergify[bot]';
|
|
const headRef = pr.head.ref || '';
|
|
const match = headRef.match(/(?:^|\/)pr-(\d+)(?:-|$)/i);
|
|
|
|
if (isMergify && match) {
|
|
const original = Number(match[1]);
|
|
if (!Number.isNaN(original)) {
|
|
core.setOutput('original_pr', String(original));
|
|
core.setOutput('is_backport', 'true');
|
|
return;
|
|
}
|
|
}
|
|
|
|
core.setOutput('is_backport', 'false');
|
|
|
|
- name: Check original PR labels
|
|
if: steps.extract.outputs.is_backport == 'true'
|
|
id: check
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const prNumber = Number("${{ steps.extract.outputs.original_pr }}");
|
|
|
|
const { data } = await github.rest.issues.get({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: prNumber
|
|
});
|
|
|
|
const labels = data.labels.map(l => l.name);
|
|
core.setOutput("has_auto_merge", labels.includes("auto-merge backports"));
|
|
|
|
- name: Add auto-merge label to backport PR
|
|
if: steps.check.outputs.has_auto_merge == 'true'
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
await github.rest.issues.addLabels({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.payload.pull_request.number,
|
|
labels: ["auto-merge"]
|
|
});
|