mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
The CI deploy bootstrap hand-listed two packages and let the ubuntu-latest runner image supply the rest, so a new host-side import surfaced as a red deploy job instead of a failed install. Size [project.dependencies] to what runs outside the project image and move the deployment stack into a deploy extra, then have every install site read that instead of naming packages itself: the image build and make install-python take the deploy extra, the CI host and the mirror and instructions workflows take the base. Declare cryptography, which utils/manager/value_generator.py imports directly and which only reached the environment transitively through ansible. Drop numpy, which nothing in the repository imports. Guard the boundary with a lint test that blocks every deploy package and asserts the runner-host CLI still builds its parser. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
43 lines
1.2 KiB
Bash
Executable File
43 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# SPOT: Deploy exactly ONE app across all distros (serial), via the shared
|
|
# per-distro loop in scripts/tests/deploy/distros.sh.
|
|
#
|
|
# Required env:
|
|
# apps="web-app-keycloak"
|
|
# INFINITO_DISTROS="arch debian ubuntu fedora centos"
|
|
# INFINITO_INVENTORY_DIR="/path/to/inventory"
|
|
#
|
|
# Optional env:
|
|
# PYTHON="python3"
|
|
#
|
|
# Script-local defaults preserved from the old Make wrapper:
|
|
# MISSING_ONLY=true
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "${SCRIPT_DIR}/../../../.." && pwd)"
|
|
cd "${REPO_ROOT}"
|
|
|
|
if [[ -f "scripts/meta/env/load.sh" ]]; then
|
|
# shellcheck source=scripts/meta/env/load.sh
|
|
source "scripts/meta/env/load.sh"
|
|
else
|
|
echo "[ERROR] Missing env file: scripts/meta/env/load.sh" >&2
|
|
exit 2
|
|
fi
|
|
|
|
: "${apps:?apps is required (e.g. apps=web-app-keycloak)}"
|
|
: "${INFINITO_DISTROS:?INFINITO_DISTROS is required (e.g. 'arch debian ubuntu fedora centos')}"
|
|
: "${INFINITO_INVENTORY_DIR:?INFINITO_INVENTORY_DIR is required}"
|
|
|
|
: "${PYTHON:=python3}"
|
|
: "${MISSING_ONLY:=true}"
|
|
|
|
export INFINITO_INVENTORY_DIR MISSING_ONLY
|
|
|
|
echo ">>> Installing CI dependencies"
|
|
PYTHON="${PYTHON}" bash "${REPO_ROOT}/scripts/install/python.sh"
|
|
|
|
exec "${REPO_ROOT}/scripts/tests/deploy/distros.sh" "${SCRIPT_DIR}/one.sh"
|