54 lines
1.8 KiB
YAML
54 lines
1.8 KiB
YAML
|
|
# ⚠️ SCAFFOLD ONLY — not active. See docs/proposals/rfc-gitops-branching-strategy.md
|
||
|
|
|
||
|
|
name: Sync Next Branch
|
||
|
|
|
||
|
|
on:
|
||
|
|
push:
|
||
|
|
tags:
|
||
|
|
- "v*"
|
||
|
|
|
||
|
|
jobs:
|
||
|
|
sync-next:
|
||
|
|
runs-on: ubuntu-latest
|
||
|
|
permissions:
|
||
|
|
contents: write
|
||
|
|
steps:
|
||
|
|
- uses: actions/checkout@v6
|
||
|
|
with:
|
||
|
|
fetch-depth: 0
|
||
|
|
token: ${{ secrets.RELEASE_PAT }}
|
||
|
|
|
||
|
|
- name: Ensure next branch exists and is synced with main
|
||
|
|
run: |
|
||
|
|
git config user.name "github-actions[bot]"
|
||
|
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||
|
|
|
||
|
|
TAG="${GITHUB_REF#refs/tags/}"
|
||
|
|
echo "Syncing next branch after release $TAG"
|
||
|
|
|
||
|
|
git fetch origin next 2>/dev/null || true
|
||
|
|
|
||
|
|
if git show-ref --verify --quiet refs/remotes/origin/next; then
|
||
|
|
git checkout next
|
||
|
|
git merge origin/main --no-edit --strategy-option theirs || {
|
||
|
|
echo "::warning::Merge conflict merging main into next after $TAG."
|
||
|
|
echo "::warning::Manual resolution required: git checkout next && git merge main"
|
||
|
|
# Open a PR for manual resolution
|
||
|
|
git merge --abort
|
||
|
|
gh pr create \
|
||
|
|
--base next \
|
||
|
|
--head main \
|
||
|
|
--title "sync: merge main ($TAG) → next (conflict)" \
|
||
|
|
--body "Automated sync from main to next after $TAG release has a merge conflict. Please resolve manually." \
|
||
|
|
|| echo "::warning::PR creation failed — resolve manually"
|
||
|
|
exit 0
|
||
|
|
}
|
||
|
|
else
|
||
|
|
git checkout -b next origin/main
|
||
|
|
fi
|
||
|
|
|
||
|
|
git push origin next
|
||
|
|
echo "## Synced \`next\` with \`main\` after \`$TAG\`" >> "$GITHUB_STEP_SUMMARY"
|
||
|
|
env:
|
||
|
|
GH_TOKEN: ${{ secrets.RELEASE_PAT }}
|