OpenMetadata release cherry-pick PR #1
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: 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 "[email protected]" | |
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; | |
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. | |
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@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.` | |
}) |