46 lines
1.4 KiB
YAML
46 lines
1.4 KiB
YAML
|
name: backport
|
||
|
|
||
|
on:
|
||
|
pull_request:
|
||
|
types: [labeled]
|
||
|
|
||
|
# Set permissions at the job level.
|
||
|
permissions: {}
|
||
|
|
||
|
jobs:
|
||
|
backport:
|
||
|
if: ${{ startsWith(github.event.label.name, 'backport ') }}
|
||
|
runs-on: ubuntu-latest
|
||
|
permissions:
|
||
|
contents: write
|
||
|
pull-requests: write
|
||
|
|
||
|
steps:
|
||
|
- uses: actions/checkout@v2
|
||
|
with:
|
||
|
fetch-depth: 0
|
||
|
persist-credentials: true
|
||
|
|
||
|
- name: Create backport PR
|
||
|
run: |
|
||
|
set -eux
|
||
|
|
||
|
git config --global user.name "pytest bot"
|
||
|
git config --global user.email "pytestbot@gmail.com"
|
||
|
|
||
|
label='${{ github.event.label.name }}'
|
||
|
target_branch="${label#backport }"
|
||
|
backport_branch=backport-${{ github.event.number }}-to-"${target_branch}"
|
||
|
subject="[$target_branch] $(gh pr view --json title -q .title ${{ github.event.number }})"
|
||
|
|
||
|
git checkout origin/"${target_branch}" -b "${backport_branch}"
|
||
|
git cherry-pick -x --mainline 1 ${{ github.event.pull_request.merge_commit_sha }}
|
||
|
git commit --amend --message "$subject"
|
||
|
git push --set-upstream origin --force-with-lease "${backport_branch}"
|
||
|
gh pr create \
|
||
|
--base "${target_branch}" \
|
||
|
--title "${subject}" \
|
||
|
--body "Backport of PR #${{ github.event.number }} to $target_branch branch. PR created by backport workflow."
|
||
|
env:
|
||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|