91 lines
2.7 KiB
YAML
91 lines
2.7 KiB
YAML
name: Auto PR from Master to Develop
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
create-pr:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!contains(github.event.head_commit.message, 'Merge pull request') &&
|
|
!contains(github.event.head_commit.message, 'Merge branch') &&
|
|
!startsWith(github.event.head_commit.message, 'Merge')
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Configure Git
|
|
run: |
|
|
git config --global user.name "github-actions[bot]"
|
|
git config --global user.email "github-actions[bot]@users.noreply.git.jingrow.com"
|
|
|
|
- name: Prepare backport_master branch (Rebase)
|
|
run: |
|
|
git fetch origin develop
|
|
git fetch origin master
|
|
|
|
# Create/update backport_master from develop
|
|
git checkout -B backport_master origin/develop
|
|
|
|
# Rebase onto master to avoid merge commits
|
|
git rebase origin/master || {
|
|
echo "Rebase conflict detected, aborting."
|
|
git rebase --abort
|
|
exit 1
|
|
}
|
|
|
|
git push origin backport_master --force-with-lease
|
|
|
|
- name: Get commit details
|
|
run: |
|
|
git fetch origin develop
|
|
COMMITS=$(git log origin/develop..origin/backport_master --pretty=format:"- %h %s")
|
|
echo "$COMMITS" > commits.txt
|
|
|
|
- name: Check if PR already exists
|
|
id: check-pr
|
|
run: |
|
|
EXISTING_PR=$(gh pr list --head backport_master --base develop --state open --json number --jq '.[0].number // empty')
|
|
echo "existing_pr=$EXISTING_PR" >> $GITHUB_OUTPUT
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Create Pull Request
|
|
if: steps.check-pr.outputs.existing_pr == ''
|
|
run: |
|
|
COMMITS_LIST=$(cat commits.txt)
|
|
PR_DESCRIPTION="**Please perform \`Merge & Commit\` to preserve commit history**
|
|
|
|
$COMMITS_LIST"
|
|
|
|
gh pr create \
|
|
--title "chore: Sync Changes from Master to Develop" \
|
|
--body "$PR_DESCRIPTION" \
|
|
--head backport_master \
|
|
--base develop
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Update existing PR
|
|
if: steps.check-pr.outputs.existing_pr != ''
|
|
run: |
|
|
COMMITS_LIST=$(cat commits.txt)
|
|
PR_DESCRIPTION="**Please perform \`Merge & Commit\` to preserve commit history**
|
|
|
|
$COMMITS_LIST"
|
|
|
|
gh pr edit ${{ steps.check-pr.outputs.existing_pr }} \
|
|
--body "$PR_DESCRIPTION"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|