-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(ci): GEN-2128 add auto cherry pick workflow (#18748)
* GEN-2128 adding auto cherry-pick workflow * GEN-2128 enhance message when cherry-pick fails
- Loading branch information
1 parent
76bd8d8
commit 7c2b1c8
Showing
1 changed file
with
76 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
--- | ||
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; | ||
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.` | ||
}) |