OpenMetadata release cherry-pick PR #8405
Workflow file for this run
This file contains hidden or 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: 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_target: | |
| types: [closed] | |
| branches: | |
| - main | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| issues: write | |
| env: | |
| CURRENT_RELEASE_ENDPOINT: ${{ vars.CURRENT_RELEASE_ENDPOINT }} # Endpoint that returns the current release version in json format | |
| jobs: | |
| get_release_branch: | |
| if: github.event.pull_request.merged == true && | |
| contains(github.event.pull_request.labels.*.name, 'To release') | |
| runs-on: ubuntu-latest | |
| outputs: | |
| release_branches: ${{ steps.get_release_version.outputs.release_branches }} | |
| steps: | |
| - name: Get the release version | |
| id: get_release_version | |
| run: | | |
| CURRENT_RELEASE=$(curl -s $CURRENT_RELEASE_ENDPOINT | jq -c '.collate_branches // []') | |
| echo "release_branches=${CURRENT_RELEASE}" >> $GITHUB_OUTPUT | |
| cherry_pick_to_release_branch: | |
| needs: get_release_branch | |
| if: needs.get_release_branch.outputs.release_branches != '' && needs.get_release_branch.outputs.release_branches != '[]' | |
| runs-on: ubuntu-latest # Running it on ubuntu-latest on purpose (we're not using all the free minutes) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| branch: ${{ fromJson(needs.get_release_branch.outputs.release_branches) }} | |
| steps: | |
| - name: Checkout main branch | |
| uses: actions/checkout@v7 | |
| with: | |
| ref: main | |
| fetch-depth: 0 | |
| - 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 ${{ matrix.branch }} | |
| git checkout ${{ matrix.branch }} | |
| 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 ${{ matrix.branch }} | |
| - name: Post a comment on failure | |
| if: steps.cherry_pick.outcome != 'success' || steps.push_changes.outcome != 'success' | |
| uses: actions/github-script@v8 | |
| with: | |
| script: | | |
| const prNumber = context.payload.pull_request.number; | |
| const releaseBranch = '${{ matrix.branch }}'; | |
| 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 ${releaseBranch} 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' | |
| uses: actions/github-script@v8 | |
| with: | |
| script: | | |
| const prNumber = context.payload.pull_request.number; | |
| const releaseBranch = '${{ matrix.branch }}'; | |
| github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: prNumber, | |
| body: `Changes have been cherry-picked to the ${releaseBranch} branch.` | |
| }) |