diff --git a/.github/workflows/cherry-pick-rc-to-develop.yml b/.github/workflows/cherry-pick-rc-to-develop.yml new file mode 100644 index 00000000000..7755fff6f51 --- /dev/null +++ b/.github/workflows/cherry-pick-rc-to-develop.yml @@ -0,0 +1,50 @@ +name: "Cherry-pick from rc to develop" + +on: + pull_request: + branches: + - release/candidate + types: + - closed + +jobs: + cherry-pick: + runs-on: ubuntu-latest + if: github.event.pull_request.merged == true + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Append -cherry-pick to branch name + id: extract + run: | + PR_BRANCH="${{ github.event.pull_request.head.ref }}" + NEW_BRANCH_NAME="${PR_BRANCH}-cherry-pick" + echo "New branch name: $NEW_BRANCH_NAME" + echo "::set-output name=newBranchName::$NEW_BRANCH_NAME" + + - uses: fregante/setup-git-user@v2 + + - name: Cherry-pick commits + run: | + git fetch origin develop:develop + git checkout -b ${{ steps.extract.outputs.newBranchName }} develop + # Cherry-picking the last commit on the base branch + git cherry-pick ${{ github.event.pull_request.merge_commit_sha }} --strategy-option theirs || true + git add . + git cherry-pick --continue || true + git push origin ${{ steps.extract.outputs.newBranchName }} + + - name: Create PR + env: + PR_TITLE: ${{ github.event.pull_request.title }} + PR_BRANCH: ${{ steps.extract.outputs.newBranchName }} + PR_ASSIGNEE: ${{ github.event.pull_request.user.login }} + PR_BODY: "${{ format('Cherry pick from the original PR: \n- #{0}\n\n ---- \n{1}', github.event.pull_request.number, github.event.pull_request.body) }}" + run: gh pr create --title "$PR_TITLE" --body "$PR_BODY" --base develop --head $PR_BRANCH --label "cherry-pick" --assignee "$PR_ASSIGNEE"