Add rc auto-release timer/service and rc branch worktree to host setup
The rc service builds from the rc branch worktree (/root/omarchy-pkgs-rc, created by bin/setup) but publishes into the primary checkout's channel tree via OMARCHY_REPO_ROOT. The timer is a retry backstop: rc builds are normally triggered immediately over SSH by the release orchestrator.
This commit is contained in:
@@ -192,9 +192,41 @@ else
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# --- rc branch worktree -------------------------------------------------------
|
||||
|
||||
# The rc channel builds from the standing `rc` branch (where the release
|
||||
# orchestrator commits RC PKGBUILD pins) in its own worktree, so rc builds
|
||||
# never contend with the master checkout. OMARCHY_REPO_ROOT in the rc service
|
||||
# points its published tree back at this checkout, so all three channels live
|
||||
# together.
|
||||
RC_WORKTREE="/root/omarchy-pkgs-rc"
|
||||
|
||||
if [[ "$CHECK_ONLY" == true ]]; then
|
||||
if [[ -d "$RC_WORKTREE" ]]; then
|
||||
print_success "rc worktree present: $RC_WORKTREE"
|
||||
else
|
||||
print_warning "rc worktree would be created at $RC_WORKTREE"
|
||||
fi
|
||||
elif [[ -d "$RC_WORKTREE" ]]; then
|
||||
print_success "rc worktree present: $RC_WORKTREE"
|
||||
else
|
||||
print_info "Creating rc branch worktree at $RC_WORKTREE..."
|
||||
git -C "$BUILD_ROOT" fetch origin rc 2>/dev/null || true
|
||||
if git -C "$BUILD_ROOT" show-ref --verify --quiet refs/heads/rc; then
|
||||
git -C "$BUILD_ROOT" worktree add "$RC_WORKTREE" rc
|
||||
elif git -C "$BUILD_ROOT" show-ref --verify --quiet refs/remotes/origin/rc; then
|
||||
git -C "$BUILD_ROOT" worktree add --track -b rc "$RC_WORKTREE" origin/rc
|
||||
else
|
||||
print_warning "No rc branch exists yet — skipping worktree"
|
||||
echo " The release orchestrator creates the rc branch on the first RC cut;"
|
||||
echo " re-run bin/setup afterwards."
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# --- release timers ----------------------------------------------------------
|
||||
|
||||
TIMERS=(omarchy-check-versions omarchy-auto-release-edge omarchy-auto-release-stable)
|
||||
TIMERS=(omarchy-check-versions omarchy-auto-release-edge omarchy-auto-release-rc omarchy-auto-release-stable)
|
||||
|
||||
if [[ "$SKIP_TIMERS" == true ]]; then
|
||||
print_info "Skipping release timers (--skip-timers)"
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=Auto-release omarchy-pkgs for rc mirror
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
# The rc channel builds from the rc branch worktree, but publishes into the
|
||||
# primary checkout's channel tree via OMARCHY_REPO_ROOT.
|
||||
ExecStartPre=/usr/bin/git -C /root/omarchy-pkgs-rc pull --ff-only
|
||||
ExecStart=/bin/bash -c 'source /root/.omarchy/build-credentials && /root/omarchy-pkgs-rc/bin/auto-release rc'
|
||||
Environment=OMARCHY_STATE_DIR=/root/.state
|
||||
Environment=OMARCHY_REPO_ROOT=/root/omarchy-pkgs/pkgs.omarchy.org
|
||||
TimeoutStartSec=7200
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Retry pending rc releases every 6 hours
|
||||
|
||||
[Timer]
|
||||
# Backstop only: rc builds are normally triggered immediately over SSH by the
|
||||
# release orchestrator (touch .sync-needed-rc + systemctl start). This timer
|
||||
# retries builds whose state file survived a failure.
|
||||
OnCalendar=*-*-* 01,07,13,19:00:00 America/New_York
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
Reference in New Issue
Block a user