mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-01 19:18:05 +00:00
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
This commit is contained in:
parent
76bd8d8886
commit
7c2b1c8a91
76
.github/workflows/auto-cherry-pick-labeled-prs.yaml
vendored
Normal file
76
.github/workflows/auto-cherry-pick-labeled-prs.yaml
vendored
Normal file
@ -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.`
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user