Add bin/omarchy-release: the interactive release front door

A release train has three human moments, each one command: start (release
branch on basecamp/omarchy + notes staging PR + edge→rc advance for
minor/major), rc (pin both PKGBUILDs to the branch head as X.Y.ZrcN on the
pkgs rc branch, trigger the rc channel build, wait for publish, optional RC
ISO), and ship (final pins → promote rc→stable → tag → pins to master → GitHub
release from the staging PR body → final ISO → website bump, each step
skip-if-done so a crashed run resumes).

Bare omarchy-release is the shepherd: it derives the train state from observed
reality (remote branches, rc-branch pins, published channel dbs, tags — no
state files) and offers the correct next step. Versions are inferred from
branch names (v4-0-2 ⇒ 4.0.2rcN ⇒ v4.0.2). ship refuses to promote a commit
no RC was cut from. pick is a multi-select over merged quattro PRs,
cherry-picking merge commits. doctor pre-flights every credential and
connection. self-test wired into CI.

bin/omarchy-pkgs stays as the pin engine, driven with its db URL pointed at
the rc channel and pins committed to the standing rc branch (rebuilt as
master + pins per cut and force-pushed; the server rc worktree follows with
reset --hard).
This commit is contained in:
Ryan Hughes committed 2026-08-27 01:10:33 -04:00
1 parent dac5ba2b45
commit 2cea400cd1
6 files changed
+950 -4

No files matched your search

+6 -2
View File
@@ -2,8 +2,12 @@
# Omarchy release management for the omarchy + omarchy-settings package pair.
#
# Cuts a release by rewriting both PKGBUILDs in lockstep (same _tag/_commit/
# pkgver/sha256sums), committing, pushing to master, and poking the build host.
# RCs publish to edge only; stable receives finals via `bin/repo migrate`.
# pkgver/sha256sums), committing, pushing, and poking the build host.
#
# This is the pin ENGINE. The release front door is bin/omarchy-release, which
# drives it against the rc channel (OMARCHY_EDGE_DB_URL points at the rc db,
# pins commit to the rc branch) as part of the edge → rc → stable pipeline.
# Direct invocations work as before and target the current branch + edge.
#
# Versioning convention (see the PKGBUILD header comments):
# finals X.Y.Z from upstream tag vX.Y.Z