mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
Twelve conflicts, resolved by intent rather than by side.
Six shared one shape: the incoming side adds the new rescue_index.sh call but
drops this branch's `# nocheck: shell-or-true` markers. The markers carry a
lint contract here, so the incoming structure was taken and the markers put
back — dedicated.sh, guide/one.sh, guide/host_deploy.sh, swarm/routine/00_one.sh
and trigger_units.sh, where the incoming version additionally writes the full
journal to a file instead of only echoing a tail.
web-app-matrix keeps HEAD's _synapse_extra_args accumulator (the superset: CA
mount plus the onion case) but adopts the incoming improvement inside it — the
inlined regex_replace gives way to lookup('subnet_gateway').
handlers/__init__.py drops rescue_diagnostics_dir from the old import group
(the incoming side moved it under .infinito.rescue, keeping both would import
it twice) and keeps tor_socks_port, a HEAD-only handler ORDERED_HANDLERS still
needs.
svc-bkp-volume-2-local takes the incoming side throughout: both branches landed
the same feature, but swarm-nfs evolved it — the knob moved from the global
STORAGE_BACKUP_SNAPSHOT_MODE to services.volume-2-local.snapshot_mode, plus the
subvolume helper, 04_snapshot_subject.yml, meta/packages.yml and baudolo 3.2.2.
Three files that left behind were removed: files/baudolo_snapshot.py and the two
worktree tests at their pre-refactor paths, all byte-identical to their moved
counterparts.
Six follow-on failures the merge produced, fixed at the root:
- STORAGE_BACKUP_SNAPSHOT_MODE lost its last reader with the config-lookup
design and is gone from group_vars.
- utils/github/variant_bundle_limits.py sat next to variant_bundles.py, which
the prefix lint forbids; the pair now lives in utils/github/variant/ as
bundles.py and bundle_limits.py, with the -m entry point, the ruff
per-file-ignore, the design-doc link and the mirroring test path updated.
- The incoming WordPress addon spec navigated with a raw page.goto and carried
three bare timeout literals; both route through gotoOnion and resolveTimeout
now, which is what makes navigation survive onion transport.
- Six unmarked `|| true` got a concrete reason each: docker.socket is absent on
distros that ship docker without it, the loop device is already detached when
the probe failed before attaching, and modprobe zfs may fail because the
/dev/zfs check decides.
make quality green across all four targets. The cold-domains budget test that
had to be waived here passes on its own now — 19d56f07e raises it to 100s.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
61 lines
2.4 KiB
Bash
Executable File
61 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Replay one role's README "Production" block on the distro the loop is
|
|
# currently on, in the mode the role dictates, then release the compose server.
|
|
#
|
|
# Param:
|
|
# GUIDE_ROLE role under test
|
|
# GUIDE_MODE host | compose
|
|
# INFINITO_DISTRO distro under test (exported by distros.sh)
|
|
# INFINITO_IMAGE_TAG tag the CI environment images were pushed under
|
|
# INFINITO_PARENT_IMAGE_OWNER owner of the pkgmgr base images
|
|
# INFINITO_PARENT_IMAGE_TAG tag of the pkgmgr base images
|
|
# INFINITO_RESCUE_DIAGNOSTICS_BASE host dir the rescue snapshots land under
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
|
|
cd "${REPO_ROOT}"
|
|
|
|
: "${GUIDE_ROLE:?GUIDE_ROLE is required (cli.meta.ci.guide_select)}"
|
|
: "${GUIDE_MODE:?GUIDE_MODE is required (cli.meta.ci.guide_select)}"
|
|
: "${INFINITO_DISTRO:?INFINITO_DISTRO is required (exported by scripts/tests/deploy/distros.sh)}"
|
|
: "${INFINITO_PARENT_IMAGE_OWNER:?INFINITO_PARENT_IMAGE_OWNER is required (default.env)}"
|
|
: "${INFINITO_PARENT_IMAGE_TAG:?INFINITO_PARENT_IMAGE_TAG is required (default.env)}"
|
|
: "${INFINITO_RESCUE_DIAGNOSTICS_BASE:?INFINITO_RESCUE_DIAGNOSTICS_BASE is required (default.env)}"
|
|
|
|
GUIDE_RUNTIME_IMAGE="$(python3 -m cli.meta.ci.image_ref --kind pkgmgr \
|
|
--distro "${INFINITO_DISTRO}" \
|
|
--owner "${INFINITO_PARENT_IMAGE_OWNER}" \
|
|
--tag "${INFINITO_PARENT_IMAGE_TAG}")"
|
|
export GUIDE_RUNTIME_IMAGE
|
|
|
|
echo "=== Guide: role=${GUIDE_ROLE} mode=${GUIDE_MODE} distro=${INFINITO_DISTRO} ==="
|
|
|
|
if [ "${GUIDE_MODE}" = "host" ]; then
|
|
exec bash "${SCRIPT_DIR}/host_deploy.sh"
|
|
fi
|
|
|
|
INFINITO_IMAGE="$(bash "${REPO_ROOT}/scripts/meta/resolve/image/ci.sh")"
|
|
export INFINITO_IMAGE
|
|
|
|
release() {
|
|
rc=$?
|
|
|
|
if [ "${rc}" -ne 0 ]; then
|
|
guide_rescue_dir="${INFINITO_RESCUE_DIAGNOSTICS_BASE}/${INFINITO_DISTRO}/${GUIDE_ROLE}"
|
|
INFINITO_RESCUE_DIAGNOSTICS_DIR="${guide_rescue_dir}" \
|
|
timeout 1500 python3 utils/diagnostics/container.py \
|
|
"${GUIDE_ROLE}" "guide compose post-deploy failure" || true # nocheck: shell-or-true -- best-effort diagnostics + teardown in the EXIT trap
|
|
bash scripts/tests/deploy/utils/rescue_index.sh "${guide_rescue_dir}"
|
|
fi
|
|
|
|
make compose-down || true # nocheck: shell-or-true -- best-effort diagnostics + teardown in the EXIT trap
|
|
|
|
return "${rc}"
|
|
}
|
|
trap release EXIT
|
|
|
|
make compose-up
|
|
bash "${SCRIPT_DIR}/compose_deploy.sh"
|