Skip to content

Commit 237b590

Browse files
authored
Backport script (#47)
1 parent c997c55 commit 237b590

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

.github/workflows/backport-2.0.yml

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,39 @@
11
name: Backport to solana-v2.0
22

33
on:
4-
pull_request:
5-
types:
6-
- labeled
7-
- closed
4+
push:
5+
branches:
6+
- main
87

98
jobs:
10-
handle-backport:
9+
backport:
1110
runs-on: ubuntu-latest
1211
steps:
1312
- name: Checkout repository
1413
uses: actions/checkout@v3
1514

16-
- name: Install GitHub CLI
17-
uses: actions/setup-node@v3
15+
- name: Fetch pull request data
16+
id: pr_data
17+
env:
18+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19+
run: |
20+
PR_NUMBER=$(gh pr list --state merged --base main --json number --jq '.[0].number')
21+
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV
22+
LABELS=$(gh pr view $PR_NUMBER --json labels --jq '.labels[].name')
23+
echo "LABELS=$LABELS" >> $GITHUB_ENV
1824
19-
- name: Determine backport condition
20-
id: determine
25+
- name: Check for v2.0 label
26+
id: check_label
2127
run: |
22-
if [[ "${{ github.event.pull_request.merged }}" == "true" ]] && [[ "${{ github.event.label.name }}" == "v2.0" ]]; then
23-
echo "create-backport=true" >> $GITHUB_ENV
24-
elif [[ "${{ github.event.label.name }}" == "v2.0" ]]; then
25-
echo "wait-for-merge=true" >> $GITHUB_ENV
28+
echo "Checking labels: $LABELS"
29+
if echo "$LABELS" | grep -q "v2.0"; then
30+
echo "BACKPORT=true" >> $GITHUB_ENV
31+
else
32+
echo "BACKPORT=false" >> $GITHUB_ENV
2633
fi
2734
2835
- name: Backport changes
29-
if: ${{ env.create-backport == 'true' }}
36+
if: ${{ env.BACKPORT == 'true' }}
3037
env:
3138
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3239
run: |
@@ -39,13 +46,15 @@ jobs:
3946
4047
# Create a new branch off solana-v2.0
4148
TARGET_BRANCH="solana-v2.0"
42-
BACKPORT_BRANCH="backport-${{ github.event.pull_request.number }}-to-v2.0"
49+
BACKPORT_BRANCH="backport-${{ env.PR_NUMBER }}-to-v2.0"
4350
git checkout $TARGET_BRANCH
4451
git checkout -b $BACKPORT_BRANCH
4552
4653
# Cherry-pick all commits from the PR
47-
PR_BRANCH="${{ github.event.pull_request.head.ref }}"
48-
git cherry-pick $(git log --reverse --format=%H origin/$PR_BRANCH) || (git cherry-pick --abort && exit 1)
54+
COMMITS=$(gh pr view ${{ env.PR_NUMBER }} --json commits --jq '.commits[].oid')
55+
for COMMIT in $COMMITS; do
56+
git cherry-pick $COMMIT || (git cherry-pick --abort && exit 1)
57+
done
4958
5059
# Push the new branch
5160
git push origin $BACKPORT_BRANCH
@@ -54,5 +63,5 @@ jobs:
5463
gh pr create \
5564
--base $TARGET_BRANCH \
5665
--head $BACKPORT_BRANCH \
57-
--title "Backport PR #${{ github.event.pull_request.number }} to solana-v2.0" \
58-
--body "This is an automated backport of PR #${{ github.event.pull_request.number }} to the solana-v2.0 branch."
66+
--title "Backport PR #${{ env.PR_NUMBER }} to solana-v2.0" \
67+
--body "This is an automated backport of PR #${{ env.PR_NUMBER }} to the solana-v2.0 branch."

0 commit comments

Comments
 (0)