Backport (#15) #4
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: | |
types: | |
- opened | |
branches: | |
- 'autolabel-backports' | |
jobs: | |
copy_metadata: | |
name: Copy metadata from base PR | |
runs-on: ubuntu-latest | |
if: github.repository == 'jakelishman/qiskit-terra' && github.actor == 'jakelishman' | |
permissions: | |
pull-requests: write | |
steps: | |
- name: Copy metadata | |
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 --repo "${{ github.repository }}" 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 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. | |
if [[ -n "$add_labels" && -n "$milestone" ]]; then | |
gh pr --repo "${{ github.repository }}" edit "${{ github.event.number }}" --add-label "$add_labels" --milestone "$milestone" | |
elif [[ -n "$add_labels" ]]; then | |
gh pr --repo "${{ github.repository }}" edit "${{ github.event.number }}" --add-label "$add_labels" | |
elif [[ -n "$milestone" ]]; then | |
gh pr --repo "${{ github.repository }}" edit "${{ github.event.number }}" --milestone "$milestone" | |
fi |