Files
computer-playbook/scripts/tests/deploy/local/deploy/container
kevinveenbirkenbachandClaude Opus 5.5 d92375922d feat(roles): pull custom roles from inventory-declared sources
An inventory group web-app-cst-<name> with applications.<id>.custom: true and
a pinned source {url, version, path} is pulled into roles/ before the play,
read raw (Jinja, Ansible tags and credential URLs refused), placed through a
staging directory under an exclusive lock, and owned by a marker that names
its own directory, so a pull or roles-clean never replaces or removes a
directory it did not place and a failed pull leaves roles/ as it was.
Directory inventories, host lists and non-UTF-8 files behave as Ansible
reads them; generated test deploys pass --skip-pull. make roles-pull,
roles-clean and roles list, INFINITO_EXTRA_MOUNTS for local sources, the
web-app-cst category, the reserved prefix lint and a central
repository_files() that also yields the gitignored custom roles let every
lint scan them like in-tree roles. Supersedes the uncommitted 045 External
Roles draft and reuses its fetch, sync and mount design.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-29 00:02:58 +01:00
..
…

Container Deploy Helpers 🐳

This directory holds the in-container halves of the local deploy flows. Each script runs inside the development compose container (the repo is bind-mounted at ${INFINITO_SRC_DIR}) and is invoked by a matching host wrapper under apps/.

Layout 🗂️

The subtree mirrors the host-side apps/ structure verb by verb and scope by scope:

Host wrapper Container half
apps/initialize/all.sh container/initialize/all.sh
apps/update/all.sh container/update/all.sh
apps/update/selection.sh container/update/selection.sh

Verbs without a container half (reinstall/, apps/initialize/selection.sh) call the dev CLI directly from the host and do not need a paired in-container helper.

Conventions 📐

Each script MUST be entered via cli.administration.deploy.development exec --env KEY=VAL (or an equivalent docker exec -e … invocation) so the host wrapper can inject the required environment. Each script MUST assert its required env-vars at the top with : "${VAR:?}" so missing context surfaces immediately. Each script MUST cd "${INFINITO_SRC_DIR}" before running anything so relative paths resolve against the bind-mounted repo. Each script SHOULD run ./scripts/docker/entry.sh true for entry bootstrap before the deploy step.