mirror of
https://github.com/outbackdingo/cozystack.git
synced 2026-01-27 10:18:39 +00:00
54 lines
1.7 KiB
YAML
54 lines
1.7 KiB
YAML
name: Automatic Backport
|
||
|
||
on:
|
||
pull_request_target:
|
||
types: [closed] # fires when PR is closed (merged)
|
||
|
||
concurrency:
|
||
group: backport-${{ github.workflow }}-${{ github.event.pull_request.number }}
|
||
cancel-in-progress: true
|
||
|
||
permissions:
|
||
contents: write
|
||
pull-requests: write
|
||
|
||
jobs:
|
||
backport:
|
||
if: |
|
||
github.event.pull_request.merged == true &&
|
||
contains(github.event.pull_request.labels.*.name, 'backport')
|
||
runs-on: [self-hosted]
|
||
|
||
steps:
|
||
# 1. Decide which maintenance branch should receive the back‑port
|
||
- name: Determine target maintenance branch
|
||
id: target
|
||
uses: actions/github-script@v7
|
||
with:
|
||
script: |
|
||
let rel;
|
||
try {
|
||
rel = await github.rest.repos.getLatestRelease({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo
|
||
});
|
||
} catch (e) {
|
||
core.setFailed('No existing releases found; cannot determine backport target.');
|
||
return;
|
||
}
|
||
const [maj, min] = rel.data.tag_name.replace(/^v/, '').split('.');
|
||
const branch = `release-${maj}.${min}`;
|
||
core.setOutput('branch', branch);
|
||
console.log(`Latest release ${rel.data.tag_name}; backporting to ${branch}`);
|
||
# 2. Checkout (required by backport‑action)
|
||
- name: Checkout repository
|
||
uses: actions/checkout@v4
|
||
|
||
# 3. Create the back‑port pull request
|
||
- name: Create back‑port PR
|
||
uses: korthout/backport-action@v3
|
||
with:
|
||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||
label_pattern: '' # don't read labels for targets
|
||
target_branches: ${{ steps.target.outputs.branch }}
|