diff --git a/README.md b/README.md index db000de..cc2b17e 100644 --- a/README.md +++ b/README.md @@ -493,6 +493,16 @@ root@pkgs.example.com All connections are plain ssh; nothing else is used to reach the host. +**How "this machine is the build host" is detected — and its one caveat.** +The marker is the published database living in this checkout +(`pkgs.omarchy.org///omarchy.db*`), the same convention the +rest of `bin/` uses. A workstation that once ran a full local +`bin/repo release` carries that marker too and would infer it is the host. +An explicitly configured destination always outranks the inference — `--host`, +`OMARCHY_REPO_HOST`, and `.repo-host` are checked first, and only when none is +set does local detection apply. So if a machine ever misidentifies itself, +writing the real host into `.repo-host` is the fix. + ## Directory Structure ``` diff --git a/bin/omarchy-pkgs b/bin/omarchy-pkgs index 707fe51..73467fa 100755 --- a/bin/omarchy-pkgs +++ b/bin/omarchy-pkgs @@ -323,7 +323,9 @@ regenerate_checksums() { trigger_build_host() { local host - if on_repo_host; then + # Explicit host configuration outranks the local-host inference (a + # workstation that ran a full local release carries the db marker too). + if ! resolve_repo_host "${REPO_HOST_OVERRIDE:-}" >/dev/null && on_repo_host; then print_info "Triggering edge build locally (this is the build host)..." if mkdir -p "${OMARCHY_STATE_DIR:-/root/.state}" && touch "${OMARCHY_STATE_DIR:-/root/.state}/.sync-needed-edge" && diff --git a/bin/omarchy-release b/bin/omarchy-release index bee7afb..3fe7357 100755 --- a/bin/omarchy-release +++ b/bin/omarchy-release @@ -241,14 +241,17 @@ touch /root/.state/.sync-needed-rc systemctl start --no-block omarchy-auto-release-rc.service ' +# An explicitly configured destination outranks the local-host inference: a +# workstation that once ran a full local release carries the published-db +# marker too, and its .repo-host must still win. trigger_rc_build() { local host - if on_repo_host; then - print_info "Triggering rc build locally (this is the build host)..." - bash -c "$RC_TRIGGER_SCRIPT" - elif host=$(repo_host); then + if host=$(repo_host); then print_info "Triggering rc build on $host..." ssh "$host" "$RC_TRIGGER_SCRIPT" + elif on_repo_host; then + print_info "Triggering rc build locally (this is the build host)..." + bash -c "$RC_TRIGGER_SCRIPT" else print_no_host_help "build the rc channel" "$RC_TRIGGER_SCRIPT" return 1 @@ -259,14 +262,14 @@ host_advance() { # host_advance [extra args...] local from="$1" to="$2" shift 2 local host - if on_repo_host; then + if host=$(repo_host); then + print_info "Advancing $from -> $to on $host..." + ssh "$host" "cd /root/omarchy-pkgs && git pull --ff-only && bin/repo advance --from $from --to $to --skip-prod-check $*" + elif on_repo_host; then # This checkout holds the published tree — advance right here, from this # checkout's tooling (no pull: the operator controls their working copy). print_info "Advancing $from -> $to locally (this is the build host)..." "$BUILD_ROOT/bin/repo" advance --from "$from" --to "$to" --skip-prod-check "$@" - elif host=$(repo_host); then - print_info "Advancing $from -> $to on $host..." - ssh "$host" "cd /root/omarchy-pkgs && git pull --ff-only && bin/repo advance --from $from --to $to --skip-prod-check $*" else print_no_host_help "advance $from -> $to" \ " cd /root/omarchy-pkgs && bin/repo advance --from $from --to $to --skip-prod-check $*" @@ -960,10 +963,10 @@ cmd_doctor() { print_warning "rc channel db not readable — bootstrap it first: bin/repo bootstrap-rc (on the build host)" fi local host - if on_repo_host; then - print_success "this machine IS the build host — host operations run locally" - elif host=$(repo_host); then + if host=$(repo_host); then check "build host ssh ($host)" ssh -o ConnectTimeout=10 "$host" true + elif on_repo_host; then + print_success "this machine IS the build host — host operations run locally" else print_warning "no build host configured — set OMARCHY_REPO_HOST, --host, or write an ssh destination (root@ or an ssh-config alias) to $BUILD_ROOT/.repo-host; until then builds trigger on the 6h timer only" fi