From d807a1f7a64158cc155fc6c8eccbf94fc9d99170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Mu=C3=B1oz?= Date: Fri, 22 Nov 2024 12:13:37 +0100 Subject: [PATCH 1/2] GEN-2128 adding auto cherry-pick workflow --- .../auto-cherry-pick-labeled-prs.yaml | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/auto-cherry-pick-labeled-prs.yaml diff --git a/.github/workflows/auto-cherry-pick-labeled-prs.yaml b/.github/workflows/auto-cherry-pick-labeled-prs.yaml new file mode 100644 index 000000000000..e1ade4856f0b --- /dev/null +++ b/.github/workflows/auto-cherry-pick-labeled-prs.yaml @@ -0,0 +1,73 @@ +--- +name: Cherry-pick labeled PRs to OpenMetadata release branch on merge +# yamllint disable-line rule:comments +run-name: OpenMetadata release cherry-pick PR #${{ github.event.pull_request.number }} + +# yamllint disable-line rule:truthy +on: + pull_request: + types: [closed] + branches: + - main +permissions: + contents: write + pull-requests: write +env: + CURRENT_RELEASE_ENDPOINT: ${{ vars.CURRENT_RELEASE_ENDPOINT }} # Endpoint that returns the current release version in json format +jobs: + cherry_pick_to_release_branch: + if: github.event.pull_request.merged == true && + contains(github.event.pull_request.labels.*.name, 'To release') + runs-on: ubuntu-latest # Running it on ubuntu-latest on purpose (we're not using all the free minutes) + steps: + - name: Checkout main branch + uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + - name: Get the release version + id: get_release_version + run: | + CURRENT_RELEASE=$(curl -s $CURRENT_RELEASE_ENDPOINT | jq -r .om_branch) + echo "CURRENT_RELEASE=${CURRENT_RELEASE}" >> $GITHUB_ENV + - name: Cherry-pick changes from PR + id: cherry_pick + continue-on-error: true + run: | + git config --global user.email "release-bot@open-metadata.org" + git config --global user.name "OpenMetadata Release Bot" + git fetch origin ${CURRENT_RELEASE} + git checkout ${CURRENT_RELEASE} + git cherry-pick -x ${{ github.event.pull_request.merge_commit_sha }} + - name: Push changes to release branch + id: push_changes + continue-on-error: true + if: steps.cherry_pick.outcome == 'success' + run: | + git push origin ${CURRENT_RELEASE} + - name: Post a comment on failure + if: steps.cherry_pick.outcome != 'success' || steps.push_changes.outcome != 'success' + uses: actions/github-script@v7 + with: + script: | + const prNumber = context.payload.pull_request.number; + const releaseVersion = process.env.CURRENT_RELEASE; + github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + body: `Failed to cherry-pick changes to the ${releaseVersion} branch.` + }) + - name: Post a comment on success + if: steps.cherry_pick.outcome == 'success' && steps.push_changes.outcome == 'success' + uses: actions/github-script@v7 + with: + script: | + const prNumber = context.payload.pull_request.number; + const releaseVersion = process.env.CURRENT_RELEASE; + github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + body: `Changes have been cherry-picked to the ${releaseVersion} branch.` + }) From e0033911b3478f9739a2616602647cd1e1bc907d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Mu=C3=B1oz?= Date: Fri, 22 Nov 2024 12:49:34 +0100 Subject: [PATCH 2/2] GEN-2128 enhance message when cherry-pick fails --- .github/workflows/auto-cherry-pick-labeled-prs.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto-cherry-pick-labeled-prs.yaml b/.github/workflows/auto-cherry-pick-labeled-prs.yaml index e1ade4856f0b..d3c8529fea42 100644 --- a/.github/workflows/auto-cherry-pick-labeled-prs.yaml +++ b/.github/workflows/auto-cherry-pick-labeled-prs.yaml @@ -52,11 +52,14 @@ jobs: script: | const prNumber = context.payload.pull_request.number; const releaseVersion = process.env.CURRENT_RELEASE; + const workflowRunUrl = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`; github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: prNumber, - body: `Failed to cherry-pick changes to the ${releaseVersion} branch.` + body: `Failed to cherry-pick changes to the ${releaseVersion} branch. + Please cherry-pick the changes manually. + You can find more details [here](${workflowRunUrl}).` }) - name: Post a comment on success if: steps.cherry_pick.outcome == 'success' && steps.push_changes.outcome == 'success'