Skip to content

Commit

Permalink
Add action to copy metadata to backport
Browse files Browse the repository at this point in the history
  • Loading branch information
jakelishman committed Sep 14, 2023
1 parent e599713 commit b015844
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/backport.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Backport metadata

# Mergify manages the opening of the backport PR, this workflow is just to extend its behaviour to
# do useful things like copying across the tagged labels and milestone from the base PR.

on:
pull_request_target:
types:
- opened
branches:
- 'stable/*'

jobs:
copy_metadata:
name: Copy labels from base PR
runs-on: ubuntu-latest
if: github.repository == 'Qiskit/qiskit' && github.actor == 'mergify[bot]'

permissions:
pull-requests: write
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -e
# Split Mergify's branch name (e.g. 'mergify/bp/stable/0.25/pr-10828') on the final '-' to get
# the number of the base PR.
IFS='-' read -ra split <<< "${{ github.ref_name }}"
base_pr=${split[-1]}
gh pr view $base_pr --json labels,milestone > base_pr.json
add_labels="$(jq '[.labels[].name] - ["stable backport potential"] | join(",")' base_pr.json)"
echo "New labels: '$add_labels'"
# 'jq' converts a JSON 'null' into the empty string.
milestone="$(jq '.milestone' base_pr.json)"
echo "Milestone: '$milestone'"
echo "Targetting current PR '${{ github.event.number }}'"
# The GitHub API is sometimes weird about calling options with empty values - the REST API
# certainly treats "add-label" with an empty input _not_ as a no-op but as a clear of all
# labels, which is quite different to its normal additive behaviour when there's labels given.
if [[ -n "$add_labels" && -n "$milestone" ]]; then
gh pr edit ${{ github.event.number }} --add-label "$add_labels" --milestone "$milestone"
elif [[ -n "$add_labels" ]]; then
gh pr edit ${{ github.event.number }} --add-label "$add_labels"
elif [[ -n "$milestone" ]]; then
gh pr edit ${{ github.event.number }} --milestone "$milestone"
fi

0 comments on commit b015844

Please sign in to comment.