feat(ci): beta release channel + live updater channel switching #98
66
.gitea/workflows/sync-beta.yml
Normal file
66
.gitea/workflows/sync-beta.yml
Normal file
@ -0,0 +1,66 @@
|
||||
name: Sync Beta from Master
|
||||
|
||||
# Merges master into beta after every push to master so beta never falls
|
||||
# behind. Uses RELEASE_TOKEN (admin user) which can push to protected
|
||||
# branches, same as the CHANGELOG commit in auto-tag.yml.
|
||||
#
|
||||
# NOTE: commits carrying [skip ci] in their message (e.g. the CHANGELOG
|
||||
# commit from auto-tag.yml) suppress all workflow runs, so this job will
|
||||
# not fire for those specific commits. The NEXT real push to master will
|
||||
# bring the skipped commit(s) along in the merge. If you need immediate
|
||||
# sync of every commit, remove [skip ci] from auto-tag.yml's CHANGELOG
|
||||
# commit and instead gate auto-tag.yml with a path or branch filter.
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
concurrency:
|
||||
group: sync-beta
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
sync:
|
||||
runs-on: linux-amd64
|
||||
container:
|
||||
image: alpine:latest
|
||||
steps:
|
||||
- name: Merge master into beta
|
||||
env:
|
||||
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
||||
run: |
|
||||
set -eu
|
||||
apk add --no-cache git
|
||||
|
||||
git init
|
||||
git remote add origin \
|
||||
"http://oauth2:${RELEASE_TOKEN}@172.0.0.29:3000/${GITHUB_REPOSITORY}.git"
|
||||
git config user.name "gitea-actions[bot]"
|
||||
git config user.email "gitea-actions@local"
|
||||
|
||||
# Check beta exists before trying to merge into it
|
||||
if ! git ls-remote --exit-code origin refs/heads/beta >/dev/null 2>&1; then
|
||||
echo "beta branch does not exist yet — skipping sync"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
git fetch origin master beta
|
||||
git checkout -b beta origin/beta
|
||||
|
||||
# If beta already contains everything in master (e.g. right after a
|
||||
# beta→master promotion) there is nothing to do.
|
||||
if git merge-base --is-ancestor origin/master HEAD; then
|
||||
echo "beta is already up to date with master — nothing to do"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if git merge --no-ff origin/master \
|
||||
-m "chore: sync beta from master [skip ci]"; then
|
||||
git push origin beta
|
||||
echo "✓ beta synced with master"
|
||||
else
|
||||
echo "✗ Merge conflict — manual resolution required"
|
||||
git merge --abort || true
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Reference in New Issue
Block a user