mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 03:38:23 +00:00
Lifecycle envelope for test-deploy discovery is now driven by INFINITO_LIFECYCLES (default: alpha beta rc stable) instead of a hardcoded constant. apps.sh forwards it to the complexity CLI via a new --lifecycles flag (comma- or whitespace-separated); the model falls back to the built-in default when unset. Manual CI (entry-manual) gains two override fields: 'lifecycles' to override the envelope per run, and 'modes' (default 'swarm compose') to pick which deploy jobs run. ci-orchestrator gates test-deploy-compose and test-deploy-swarm on the selected modes and threads lifecycles into both. The new key is registered in the passthrough handler so it lands in the generated .env. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
255 lines
11 KiB
Bash
255 lines
11 KiB
Bash
# Single source of truth for the project's static defaults.
|
|
#
|
|
# Every key here is copied verbatim into the generated `.env` by
|
|
# `make dotenv` (which delegates to `python -m cli.meta.env`), together
|
|
# with the dynamic runtime-resolved values (distro, GHA flags,
|
|
# df/meminfo-derived sizes, sha256 secrets, repository owner, ...).
|
|
#
|
|
# Override at generation time by exporting the variable before running
|
|
# `make dotenv` -- already-set env vars take precedence over the
|
|
# defaults below.
|
|
#
|
|
# Convention: every key is preceded by a single-line `# ...` comment
|
|
# that explains what the value is for. The generator preserves the
|
|
# comments when materialising `.env`.
|
|
|
|
# Where scripts/meta/resolve/apps.sh runs the meta-CLI: host | docker.
|
|
INFINITO_APP_DISCOVERY_RUNNER=docker
|
|
|
|
# Per-app variant index map for credential generation, set per round by the swarm matrix orchestrator; empty elsewhere.
|
|
INFINITO_APP_VARIANTS=
|
|
|
|
# Host interface(s) the compose stack binds published ports to.
|
|
INFINITO_BIND_IP=127.0.0.1
|
|
|
|
# `1` builds the local image; `0` skips the build and pulls the published image (CI overrides via -e INFINITO_BUILD=0).
|
|
INFINITO_BUILD=1
|
|
|
|
# `1` keeps BuildKit on (default); `0` forces the compose wrapper to use the legacy builder.
|
|
INFINITO_BUILDKIT_ENABLED=1
|
|
|
|
# Bind-mounted apt sources.list fragment for the package-cache frontend.
|
|
INFINITO_CACHE_PACKAGE_APT_LIST=./compose/package-cache/apt.list
|
|
|
|
# Host directory holding the package-cache frontend CA materials.
|
|
INFINITO_CACHE_PACKAGE_FRONTEND_CA_DIR=/var/cache/infinito/core/cache/package/frontend/ca
|
|
|
|
# CA certificate file produced under INFINITO_CACHE_PACKAGE_FRONTEND_CA_DIR.
|
|
INFINITO_CACHE_PACKAGE_FRONTEND_CA_FILE=/var/cache/infinito/core/cache/package/frontend/ca/ca.crt
|
|
|
|
# Host directory holding the package-cache frontend TLS certificates.
|
|
INFINITO_CACHE_PACKAGE_FRONTEND_CERTS_DIR=/var/cache/infinito/core/cache/package/frontend/certs
|
|
|
|
# Init image used by the package-cache frontend cert-gen wrapper to run cert-gen.sh.
|
|
INFINITO_CACHE_PACKAGE_FRONTEND_INIT_IMAGE=alpine:latest
|
|
|
|
# Static IPv4 address the package-cache frontend takes on the docker bridge.
|
|
INFINITO_CACHE_PACKAGE_FRONTEND_IP=172.30.0.4
|
|
|
|
# Host directory backing the Nexus 3 package-cache blobstore.
|
|
INFINITO_CACHE_PACKAGE_HOST_PATH=/var/cache/infinito/core/cache/package/data
|
|
|
|
# Cache freshness window (minutes) Nexus tolerates before re-validating upstream. 8640 = 6 days (below the 7-day Debian Valid-Until).
|
|
INFINITO_CACHE_PACKAGE_MAX_AGE_MIN=8640
|
|
|
|
# Bind-mounted .npmrc fragment for the package-cache frontend.
|
|
INFINITO_CACHE_PACKAGE_NPMRC=./compose/package-cache/npmrc
|
|
|
|
# Bind-mounted pip.conf fragment for the package-cache frontend.
|
|
INFINITO_CACHE_PACKAGE_PIP_CONF=./compose/package-cache/pip.conf
|
|
|
|
# Host port the Nexus 3 package cache binds to on BIND_IP.
|
|
INFINITO_CACHE_PACKAGE_PORT=8081
|
|
|
|
# Host directory holding the registry-cache CA materials.
|
|
INFINITO_CACHE_REGISTRY_CA_HOST_PATH=/var/cache/infinito/core/cache/registry/ca
|
|
|
|
# Host directory backing the docker registry-mirror cache (bind mount).
|
|
INFINITO_CACHE_REGISTRY_HOST_PATH=/var/cache/infinito/core/cache/registry/mirror
|
|
|
|
# Static IPv4 of the registry-cache; resolved via extra_hosts since coredns can't resolve the container name.
|
|
INFINITO_CACHE_REGISTRY_IP=172.30.0.6
|
|
|
|
# Bind-mounted registry-cache proxy configuration consumed by the cache container.
|
|
INFINITO_CACHE_REGISTRY_PROXY_CONF=./compose/registry-cache/proxy.conf
|
|
|
|
# Compose service container name; generator overrides as infinito_nexus_${INFINITO_DISTRO}.
|
|
INFINITO_CONTAINER=infinito_nexus_debian
|
|
|
|
# `1` (default) keeps CA injection on in the container wrapper; `0` skips it.
|
|
INFINITO_CONTAINER_CA_ENABLED=1
|
|
|
|
# cpus cap applied to the infinito container; 0 means "unlimited".
|
|
INFINITO_CPUS=0
|
|
|
|
# Truthy enables debug behavior in the local deploy flows.
|
|
INFINITO_DEBUG=true
|
|
|
|
# Deploy mode the discovery matrix targets (compose|swarm) for per-mode services.yml skip; empty disables it.
|
|
INFINITO_DEPLOY_MODE=
|
|
|
|
# Base state dir SPOT (/var/lib); env build derives paths from it; dev inventory injects it into DIR_VAR_LIB.
|
|
INFINITO_DIR_VAR_LIB=/var/lib/infinito
|
|
|
|
# Sort spec the CI app-discovery (scripts/meta/resolve/apps.sh) orders roles by before the --max-jobs budget cut.
|
|
INFINITO_DISCOVERY_SORT="asc covered_by,desc embeds,desc consumers,asc variant,asc random"
|
|
|
|
# Distro the build/test matrix is currently iterating over (generator may override).
|
|
INFINITO_DISTRO=debian
|
|
|
|
# Space-separated list of distros the build/test matrix iterates over.
|
|
INFINITO_DISTROS="arch debian ubuntu fedora centos"
|
|
|
|
# Domain the host-side DNS-fallback / dnsmasq config wires up (consumed by scripts/system/network/dns/).
|
|
INFINITO_DNS_DOMAIN=infinito.example
|
|
|
|
# Path to the hosts file the DNS-fallback installer writes the BEGIN/END block into.
|
|
INFINITO_DNS_HOSTS_FILE=/etc/hosts
|
|
|
|
# IPv4 of the CoreDNS sidecar inside INFINITO_SUBNET; CI/dev default, overridden in real deploys.
|
|
INFINITO_DNS_IP=172.30.0.53
|
|
|
|
# Mount point inside the infinito container where INFINITO_DOCKER_VOLUME lands.
|
|
INFINITO_DOCKER_MOUNT=/var/lib/docker
|
|
|
|
# Docker volume backing /var/lib/docker; generator overrides to /mnt/docker on GHA.
|
|
INFINITO_DOCKER_VOLUME=docker
|
|
|
|
# Top-level project domain rendered into vhost/cert/test fixtures; CI/dev default, overridden in real deploys.
|
|
INFINITO_DOMAIN=infinito.example
|
|
|
|
# INFINITO_DOMAIN escaped for inclusion in regex patterns (literal `.`); keep in sync with INFINITO_DOMAIN.
|
|
INFINITO_DOMAIN_RE=infinito\.example
|
|
|
|
# IPv4 of the bridge gateway inside INFINITO_SUBNET.
|
|
INFINITO_GATEWAY=172.30.0.1
|
|
|
|
# Prefix path under which GHCR mirror lookups search for cached images.
|
|
INFINITO_GHCR_MIRROR_PREFIX=mirror
|
|
|
|
# Image tag used to address the published infinito image (CI publishes 'latest' on push).
|
|
INFINITO_IMAGE_TAG=latest
|
|
|
|
# Repo-relative path to the Ansible vars file `infinito administration inventory provision --vars-file <...>` consumes.
|
|
INFINITO_INVENTORY_VARS_FILE=inventories/development/default.yml
|
|
|
|
# IPv4 of the infinito application container inside INFINITO_SUBNET; CI/dev default, overridden in real deploys.
|
|
INFINITO_IP4=172.30.0.10
|
|
|
|
# IPv6 loopback / public address the playbook's `internet` network defaults to when no host_var pin is set.
|
|
INFINITO_IP6=::1
|
|
|
|
# True when /proc/version identifies the host as WSL2; generator overrides via runtime detection.
|
|
INFINITO_IS_WSL2=false
|
|
|
|
# Keep act-swarm test cluster alive after the workflow for post-mortem inspection.
|
|
INFINITO_KEEP_SWARM_NODES=false
|
|
|
|
# Lifecycle envelope the CI test-deploy discovery exercises (scripts/meta/resolve/apps.sh --lifecycles); comma/space-separated.
|
|
INFINITO_LIFECYCLES="alpha beta rc stable"
|
|
|
|
# Ansible limit pattern for local deploys.
|
|
INFINITO_LIMIT_HOST=localhost
|
|
|
|
# Where scripts/lint/wrapper.sh executes 'make lint*' / 'make autoformat': host | docker.
|
|
INFINITO_LINT_RUNNER=docker
|
|
|
|
# Cumulative CI job budget the app-discovery hard-caps at (scripts/meta/resolve/apps.sh --max-jobs).
|
|
INFINITO_MAX_JOBS=100
|
|
|
|
# memswap_limit cap applied to the infinito container; 0 means "unlimited".
|
|
INFINITO_MEMSWAP_LIMIT=0
|
|
|
|
# mem_limit cap applied to the infinito container; 0 means "unlimited".
|
|
INFINITO_MEM_LIMIT=0
|
|
|
|
# MTU of the compose stack's bridge network; 1500 matches most hosts.
|
|
INFINITO_OUTER_NETWORK_MTU=1500
|
|
|
|
# GHCR owner of the pkgmgr base image. Composed into INFINITO_PARENT_IMAGE by utils/env/handlers/infinito_parent_image.py.
|
|
INFINITO_PARENT_IMAGE_OWNER=kevinveenbirkenbach
|
|
|
|
# Tag of the pkgmgr base image. Composed into INFINITO_PARENT_IMAGE by utils/env/handlers/infinito_parent_image.py.
|
|
INFINITO_PARENT_IMAGE_TAG=stable
|
|
|
|
# Variant of the pkgmgr base image. Currently only `full` is supported.
|
|
INFINITO_PARENT_IMAGE_VARIANT=full
|
|
|
|
# `true` keeps Playwright trace, screenshot, and video for every test; default `false` retains them only on failure.
|
|
INFINITO_PLAYWRIGHT_KEEP=false
|
|
|
|
# When `true`, the CI down-handler skips wiping the Docker volume so layer cache survives across jobs.
|
|
INFINITO_PRESERVE_DOCKER_CACHE=false
|
|
|
|
# Docker pull policy compose applies; generator overrides to `always` on GHA.
|
|
INFINITO_PULL_POLICY=never
|
|
|
|
# Absolute path of the repository root on the runner host; passed through to nested Ansible invocations.
|
|
INFINITO_REPO_ROOT=
|
|
|
|
# Per-runner CI storage budget; roles needing more are dropped from the matrix (scripts/meta/resolve/apps.sh).
|
|
INFINITO_REQUIRED_STORAGE=60GB
|
|
|
|
# Prefix applied to per-runner Docker Compose project names and container labels; empty in non-runner contexts.
|
|
INFINITO_RUNNER_PREFIX=infinito
|
|
|
|
# True when running under nektos/act locally; generator overrides via runtime detection.
|
|
INFINITO_RUNNING_ON_ACT=false
|
|
|
|
# True when running on real GitHub Actions; generator overrides via runtime detection.
|
|
INFINITO_RUNNING_ON_GITHUB=false
|
|
|
|
# Extra flags forwarded verbatim to 'docker run' by 'make run'.
|
|
INFINITO_RUN_FLAGS=
|
|
|
|
# Absolute path to the bind-mounted repo root inside the dev container.
|
|
INFINITO_SRC_DIR=/opt/src/infinito
|
|
|
|
# CIDR of the internal docker bridge used by the compose stack.
|
|
INFINITO_SUBNET=172.30.0.0/24
|
|
|
|
# Lab bridge-network base name linking the act-swarm-test containers.
|
|
INFINITO_SWARM_LAB_NET_NAME=swarm-lab
|
|
|
|
# Manager-node base name in the act-swarm-test cluster (prefixed with the cluster id at runtime).
|
|
INFINITO_SWARM_MGR_NAME=swarm-mgr-01
|
|
|
|
# NFS export base path inside the NFS-server sidecar that backs swarm-shared volumes.
|
|
INFINITO_SWARM_NFS_EXPORT_BASE=/srv/nfs
|
|
|
|
# NFS-server sidecar base name in the act-swarm-test cluster.
|
|
INFINITO_SWARM_NFS_NAME=nfs-server
|
|
|
|
# Docker label stamped on every act-swarm-test container (DinD + NFS sidecar) so cleanup selects by label, not a guessed name.
|
|
INFINITO_SWARM_TEST_LABEL=infinito.swarm-test
|
|
|
|
# Worker-node-1 base name in the act-swarm-test cluster.
|
|
INFINITO_SWARM_WRK1_NAME=swarm-wrk-01
|
|
|
|
# Worker-node-2 base name in the act-swarm-test cluster.
|
|
INFINITO_SWARM_WRK2_NAME=swarm-wrk-02
|
|
|
|
# Glob `unittest discover -p` applies when running the test suites.
|
|
INFINITO_TEST_PATTERN=test*.py
|
|
|
|
# Where scripts/tests/code/wrapper.sh executes the test run: docker | host.
|
|
INFINITO_TEST_RUNNER=docker
|
|
|
|
# Integer multiplier applied to Ansible retry/delay values on slow self-hosted hardware; 1 = no scaling.
|
|
INFINITO_TIMEOUT_MULTIPLIER=1
|
|
|
|
# Variant overlay (applications.<app> services/credentials) baked per round by the swarm matrix orchestrator; empty elsewhere.
|
|
INFINITO_VARS_PAYLOAD=
|
|
|
|
# Absolute path of the project virtualenv inside the dev container (and on the host when /opt is writable).
|
|
INFINITO_VENV_DIR=/opt/venvs/infinito
|
|
|
|
# Seconds 'make up' waits for the infinito container healthcheck before failing.
|
|
INFINITO_WAIT_HEALTH_TIMEOUT_S=600
|
|
|
|
# Optional app-discovery filter consumed by scripts/meta/resolve/apps.sh and the GHA workflow.
|
|
INFINITO_WHITELIST=
|
|
|
|
# Master toggle for the worker SPOT chain (INFINITO_WORKER_CPU / _FETCH); falsy values: 0/false/no/off.
|
|
INFINITO_WORKER_ENABLED=true
|