Replace fragile is_admin-based admin check with a username-based existence
check and switch from shell to argv-based command execution to avoid shell
expansion issues. This prevents duplicate users_groups inserts on repeated
runs and fixes failures on second deployment runs.
https://chatgpt.com/share/698259da-c990-800f-a491-3dc8cc7376f8
- remove host-mounted INFINITO_DOCKER_VOLUME between runs
- recreate docker data dir to avoid cross-distro state leakage
- keep images while fully resetting containers, networks and volumes
- ensure clean CI environment for each distro deploy
- Switch Makefile commands from make vars to shell env vars ($$VAR)
- Ensure PYTHON and INFINITO_* are always resolved via scripts/meta/env.sh
- Fix build-no-cache-all to use env-provided DISTROS safely
- Remove redundant env forwarding in install targets
- Load env.sh robustly in promote-stable.sh with ShellCheck-safe handling
- Fix Python invocation in promote-stable.sh to use env-resolved PYTHON
No functional behavior change intended.
https://chatgpt.com/share/69820891-2238-800f-ad70-bae7e442c028
- Move all environment detection, defaults, and exports into scripts/meta/env.sh
- Use BASH_ENV in Makefile to auto-source env.sh for all recipes
- Remove duplicated env logic from Makefile (VENV, PYTHON, CI detection, inventory)
- Make env setup safe under set -euo pipefail (-u compatible)
- Ensure consistent behavior across local, act, and GitHub Actions runs
No functional behavior change intended.
https://chatgpt.com/share/69820891-2238-800f-ad70-bae7e442c028
- Track runtime per distro during CI deploy runs
- Add MAX_TOTAL_SECONDS env to limit total execution time
- Skip remaining distros if remaining budget is smaller than the slowest prior run
- Print warnings and a detailed timing summary at the end
- Wire time budget via Makefile for ci-deploy-app
https://chatgpt.com/share/6981f7e4-590c-800f-a6df-15557ce73a86
- Replace legacy app.sh/distros.sh orchestration with explicit all_distros.sh + dedicated_distro.sh
- Deploy each app sequentially across distros against a fresh stack
- Run two deploy passes per distro:
- Pass 1 with ASYNC_ENABLED=false
- Pass 2 with ASYNC_ENABLED=true against the same stack
- Remove deprecated cli.deploy.development run orchestrator
- Extend init command with --vars to inject inventory overrides
- Enforce debug mode for CI deploys
- Add hard Docker cleanup after each distro (containers, networks, volumes, build cache; keep images)
- Emit disk and docker usage before and after deploy for observability
https://chatgpt.com/share/6981c7d4-642c-800f-8438-9e2349ac53fb
- Use a dedicated builder container image (composer:2.7) for Shopware setup
- Move Shopware release definition to docker.services.shopware.package
- Update Dockerfile to reference container image/version and package name/version explicitly
- Align vars with clear CONTAINER vs PKG naming for better semantics and maintainability
https://chatgpt.com/share/6981466d-6ec0-800f-848f-fa768ec7a821
- Introduce reusable workflow `mirror-images-missing.yml` to mirror only missing
Docker Hub images to GHCR using `--only-missing`
- Scope mirror concurrency per branch using `github.ref_name`
- Rename full mirror workflow to `mirror-images-all.yml` for clarity
- Integrate missing-image mirror into CI orchestrator and gate server/universal
deploys on successful mirror completion
- Add tag existence checks via `skopeo inspect` to avoid redundant uploads
- Keep mirror runs best-effort to avoid blocking CI on transient registry issues
https://chatgpt.com/share/698141e9-0844-800f-9c4f-fecd468ede73
- Add required GHCR mirror environment variables to CI workflows
- Generate mirrors.yml during development inventory init on CI
- Introduce mirrors helper module with strict env validation
- Minor formatting cleanup in mirror providers
`
https://chatgpt.com/share/6980ff2e-8f18-800f-85e1-79d56a2027f5
- Define LibreTranslate image and version under docker.services.libretranslate
- Replace generic application image lookup with explicit service-based variables
- Align docker-compose template with standardized service naming
https://chatgpt.com/share/6980dff8-34c8-800f-92cb-c97a3033698d
- Move Friendica image/version into docker.services.friendica
- Replace legacy friendica_* vars with FRIENDICA_* namespace
- Make compose service name configurable via FRIENDICA_SERVICE
- Unify addon handling and IAM flags (OIDC / LDAP)
- Fix env boolean rendering for FRIENDICA_NO_VALIDATION
https://chatgpt.com/share/6980de90-2f5c-800f-8387-10e0f8612782
- Move pgAdmin image, version, server_mode, and master_password_required
into docker.services.pgadmin
- Switch docker-compose service and container name to entity_name
- Introduce PGADMIN_* variables and use them consistently across templates
- Update file ownership variables to PGADMIN_USER / PGADMIN_GROUP
- Keep server JSON and pgpass mounts conditional on PGADMIN_SERVER_MODE
https://chatgpt.com/share/6980d836-44e8-800f-acdb-2ec3aac8e761
Add a unittest-based integration test that scans all roles/*/config/main.yml
and validates docker.services.*.image and *.version only when present.
Ensures allowed Docker image name and tag characters without enforcing
image/version coupling.
https://chatgpt.com/share/6980cd2d-0644-800f-9e1f-0c8daa98e85c
- add post-mirror step to set GHCR package visibility to public
- extract publish logic into scripts/release/ghcr_make_public.sh
- ensure repo-root handling is robust via explicit cd
- keep publish step best-effort while mirror sync can fail
- mirror sync now continues on individual skopeo failures
- collect and summarize failed images
- return non-zero exit code only after all images were processed
- make GitHub workflow respect mirror sync exit status
https://chatgpt.com/share/6980b558-5fdc-800f-911e-48bbc35a461f