Commit Graph
166 Commits
Author SHA1 Message Date
kevinveenbirkenbach a49976fd41 Fix CI cleanup by force-resetting Docker root directory
- Use sudo to reliably remove root-owned files under INFINITO_DOCKER_VOLUME
- Recreate Docker root directory after cleanup
- Restore runner ownership to avoid follow-up permission issues
- Add debug output for ownership and permissions
- Document required INFINITO_DOCKER_VOLUME in script usage

This prevents poisoned CI runs caused by incomplete Docker cleanup between distros.

https://chatgpt.com/share/6988be7d-fe40-800f-8ab9-60825acc064d
2026-02-08 17:48:56 +01:00
kevinveenbirkenbach 2eeaad9650 Removed release stable workflow. every image is now implicit stable 2026-02-08 11:28:15 +01:00
kevinveenbirkenbach 2d1f1d94e5 ci: simplify image build and tag version releases correctly
- Build a single CI image per distro (remove slim/full variants)
- Retag CI images to version/latest without rebuild
- Trigger version releases only for v* tags on master
- Remove redundant image existence/rebuild logic
- Align promote-stable and retag scripts with single-image flow

https://chatgpt.com/share/6988607b-3330-800f-9d3b-4fc06fab5d56
2026-02-08 11:07:37 +01:00
kevinveenbirkenbach 53e817fa22 refactor(compose): migrate from docker-compose.yml to compose.yml everywhere
- Rename all docker-compose.yml templates to compose.yml
- Update override and CA override filenames accordingly
- Adjust compose wrapper, lookup plugins, filters and path helpers
- Update roles, tasks, handlers and scripts to use compose CLI
- Rewrite documentation and admin guides to reference compose
- Update unit and integration tests to expect compose.yml
- Keep internal variable keys for backward compatibility where needed

https://chatgpt.com/share/69870272-b168-800f-84c3-6417398e441f
2026-02-07 10:14:21 +01:00
kevinveenbirkenbach ba35d7c5e0 refactor(container): replace docker ps usages with container wrapper and move binaries to /usr/bin
https://chatgpt.com/share/698660b7-4c78-800f-b25f-af5408cff034
2026-02-06 22:44:14 +01:00
kevinveenbirkenbach ddfbe001b2 Use container wrapper for logs in health checks and diagnostics
https://chatgpt.com/share/698659d9-62e4-800f-89a1-5d44f309bde4
2026-02-06 22:30:19 +01:00
kevinveenbirkenbach e8f62dfa7c Solved reset bug 2026-02-06 18:02:24 +01:00
kevinveenbirkenbach b399253884 test(deploy): run dedicated_distro init and deploy inside development container
Move entry.sh, development init, and development deploy execution into the
development container via cli.deploy.development exec.

Deployment logic, arguments, and execution order remain unchanged.

https://chatgpt.com/share/69861572-9c74-800f-9f3f-904202371bbc
2026-02-06 17:22:38 +01:00
kevinveenbirkenbach 51239968fd refactor: rename docker-compose roles to sys-svc-compose and update paths
Renamed docker-compose and docker-compose-ca roles to sys-svc-compose and sys-svc-compose-ca, updated template includes, handlers, lookups, tests, and variables, and moved compose instances to /opt/compose.

https://chatgpt.com/share/6985ab2c-8344-800f-9e9a-768f562d138d
2026-02-06 09:49:42 +01:00
kevinveenbirkenbach 88924b4fdd Removed update mode verywhere to keep behaviour more deterministic 2026-02-05 11:43:14 +01:00
kevinveenbirkenbach f9f0501f1a Refresh matomo 2026-02-04 14:03:38 +01:00
kevinveenbirkenbach a5bbba1eb3 Added inventory to cleanup 2026-02-04 10:07:02 +01:00
kevinveenbirkenbach b6fa8c1a31 Build inventory at beginning 2026-02-04 01:16:10 +01:00
kevinveenbirkenbach fe40b48cab tests(local): add non-destructive dedicated deploy and refactor local utils
- Add local dedicated_distro.sh implementing the same two-pass deploy logic
  as CI (ASYNC_ENABLED=false/true) without destructive cleanup
- Switch test-local-dedicated to pure ENV-based interface (TEST_DEPLOY_TYPE, APP)
- Refactor local deploy helpers into utils/ structure:
  - move reset.sh to utils/reset.sh
  - split cleanup into targeted purge helpers (entity, web, lib)
- Update Makefile targets to reflect new structure and workflows

https://chatgpt.com/share/6982804e-1f60-800f-809e-629d0fe62de3
2026-02-04 00:10:00 +01:00
kevinveenbirkenbach 4066dbfeed Adapted script path 2026-02-03 22:51:34 +01:00
kevinveenbirkenbach 067669783a refactor(purge): split entity purge into db/compose/dir scripts
- Add purge/entity/all.sh orchestrator with --wipe-data-only and --db-only
- Extract DB purge logic into purge/entity/db.sh (best-effort Postgres + MariaDB)
- Add purge/entity/compose.sh to bring stacks down with volumes removed
- Add purge/entity/dir.sh to remove stack directory and volumes folder
- Rename purge_web.sh to purge/web.sh for consistent layout

https://chatgpt.com/share/69826b33-1470-800f-9def-6b4289713e2f
2026-02-03 22:39:39 +01:00
kevinveenbirkenbach 0ca8448b30 ci: hard-clean Docker state between distro deploys
- 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
2026-02-03 20:06:36 +01:00
kevinveenbirkenbach 7ba9b158d2 refactor(make,release): rely on env.sh for runtime vars and fix shell escaping
- 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
2026-02-03 16:01:48 +01:00
kevinveenbirkenbach 81ddadc2d2 refactor(env): centralize runtime environment in scripts/meta/env.sh (SPOT)
- 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
2026-02-03 15:39:03 +01:00
kevinveenbirkenbach 0c9c8277d5 feat(ci): shuffle distros before deploy to improve fairness under time budget
- Randomize distro execution order in all_distros.sh
- Log final execution order for easier debugging

https://chatgpt.com/share/6981f7e4-590c-800f-a6df-15557ce73a86
2026-02-03 14:37:45 +01:00
kevinveenbirkenbach c75a823391 feat(ci): enforce global time budget for multi-distro deploys
- 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
2026-02-03 14:27:59 +01:00
kevinveenbirkenbach 5c0a86b8a7 Merge branch 'feature/self-signed-tls' into feature/finalize-tests 2026-02-03 12:33:14 +01:00
kevinveenbirkenbach 9555d65858 Removed log logic from ci 2026-02-03 12:28:45 +01:00
kevinveenbirkenbach 9344a11c18 fix(ci-cleanup): use array-safe container removal to satisfy ShellCheck
- Replace word-splitting container ID handling with bash array
- Avoid SC2086 by passing container IDs as "${ids[@]}"
- Preserve correct behavior for multiple containers in CI cleanup

https://chatgpt.com/share/6981c7d4-642c-800f-8438-9e2349ac53fb
2026-02-03 11:05:15 +01:00
kevinveenbirkenbach bc38347798 refactor(ci-deploy): split per-distro deploy, add two-pass async test and hard cleanup
- 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
2026-02-03 11:02:51 +01:00
kevinveenbirkenbach 9e1792c6ad chore(ci): remove GHCR publish-to-public step from mirror workflow
https://chatgpt.com/share/6980fc3e-2f98-800f-913d-bab61e2fa831
2026-02-02 20:34:09 +01:00
kevinveenbirkenbach d1cf6b72f4 feat(mirror): publish mirrored GHCR images as public via release script
- 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
2026-02-02 15:56:01 +01:00
kevinveenbirkenbach 3215bc7d53 dev(apparmor): add teardown/restore hooks for local docker workflows
Introduce explicit AppArmor teardown before docker-up and restore after docker-down.
Replace complain-mode helper with full profile unload/reload scripts to ensure
deterministic local dev behavior while keeping CI unaffected.

https://chatgpt.com/share/697f4782-8304-800f-8b07-cb6484a4148f
2026-02-01 13:30:49 +01:00
kevinveenbirkenbach 4f10f82372 Made executable 2026-01-31 23:15:49 +01:00
kevinveenbirkenbach 0910029e3d admin: add trust-ca make target and host CA trust script
- add make target `trust-ca` as thin wrapper
- introduce scripts/administration/trust_ca.sh
- extract Infinito root CA from running container
- install CA into host trust store via with-ca-trust.sh
- keep Makefile free of logic, delegate to script

https://chatgpt.com/share/697e31e7-e548-800f-9edd-9b030ee12c5b
2026-01-31 17:46:24 +01:00
kevinveenbirkenbach 340e3696b6 dev: disarm AppArmor via host script and Makefile wrapper
Move AppArmor handling out of docker-compose files and into a
dedicated dev-only administration script. The new `disarmapp`
Make target acts as a thin wrapper to set relevant AppArmor
profiles (php-fpm, dovecot) to complain mode on the development host,
keeping compose templates clean and prod-like.

https://chatgpt.com/share/697cfbdf-e2a8-800f-bf06-b75e8c9d926e
2026-01-30 21:48:43 +01:00
kevinveenbirkenbach 2678090934 feat(ca-trust): unify trust injection + strict templating
Move `with-ca-trust.sh` to `sys-ca-selfsigned` as the single source of truth, add `CA_TRUST_NAME`/`trust_name`, and pass it through `compose_ca_inject.py` + `compose_ca_inject_cmd`. Introduce `module_utils/templating.py` for strict multi-pass rendering with fallback env lookup, update TLS self-signed regen logic, purge script, and extend unit tests accordingly.

https://chatgpt.com/share/697c876d-7140-800f-9981-762dfeeafdfe
2026-01-30 11:26:46 +01:00
kevinveenbirkenbach b2fb72d112 feat(tls): split TLS settings to 02_tls and add self-signed root CA role
Move TLS/ACME/CA vars out of 00_general into group_vars/all/02_tls.yml and renumber subsequent group_vars files. Add sys-ca-selfsigned to generate /etc/<software>/ca/root-ca.crt and make docker-compose-ca depend on it. Update setup script, templates, and tests to use the new applications/users file numbering.

https://chatgpt.com/share/697b8150-22ac-800f-98b1-e063a659b684
2026-01-29 16:48:03 +01:00
kevinveenbirkenbach b9bb4a95fd Included other helper command 2026-01-29 14:41:17 +01:00
kevinveenbirkenbach ecb0d6071c On Local deploy reduce repeat times for failed systemctl runenrs to debug faster 2026-01-29 11:26:59 +01:00
kevinveenbirkenbach 5c163900c1 test(matrix): exclude web-opt-rdr-www from universal tests
https://chatgpt.com/share/697a7c6e-a674-800f-9ace-27cc49399d87
2026-01-28 22:15:19 +01:00
kevinveenbirkenbach 52ba09d165 fix(local-deploy): use TEST_DEPLOY_TYPE inventory file and fix shell expansion
https://chatgpt.com/share/697a73ea-1b34-800f-8318-be15afab2d08
2026-01-28 21:38:47 +01:00
kevinveenbirkenbach adf17fd146 feat(admin): purge DB even if stack directory is missing
- Always attempt DB purge by stack name
- Try both PostgreSQL and MariaDB backends
- Support DROP or TRUNCATE via --wipe-data-only
- Keep compose/volume cleanup best-effort and safe
- Improve robustness for orphaned databases

https://chatgpt.com/share/6977a100-0e00-800f-8bb0-320b00e94c7e
2026-01-26 18:14:30 +01:00
kevinveenbirkenbach 3d3d5480d7 fix(admin): make purge_entity.sh TTY-safe and support multi-entity cleanup
- Isolate each stack purge in a subshell to prevent early termination
- Detach all docker/docker-compose calls from STDIN to avoid TTY issues inside containers
- Harden MariaDB drop/truncate logic against nested docker exec behavior
- Allow cleanup.sh to accept multiple APP values (whitespace or comma-separated)
- Deduplicate derived entities before purging and iterate deterministically

https://chatgpt.com/share/69774b3d-611c-800f-8cf0-422d11d50c1c
2026-01-26 12:08:36 +01:00
kevinveenbirkenbach 4bbdbeb54b feat(admin): add --wipe-data-only to purge_entity.sh
- Add --wipe-data-only flag to truncate DB tables instead of dropping databases
- Implement best-effort Postgres TRUNCATE for all public tables (CASCADE)
- Implement best-effort MariaDB TRUNCATE with FOREIGN_KEY_CHECKS handling
- Keep compose down -v and stack/volumes cleanup behavior unchanged
- Improve env parsing/readability and harden DB backend detection

https://chatgpt.com/share/6976642a-d6f8-800f-976d-7e27a5b45276
2026-01-25 19:42:32 +01:00
kevinveenbirkenbach a9f8eb2d8f Added adminstration helper 2026-01-25 14:32:04 +01:00
kevinveenbirkenbach 49da7376a9 ci(ansible): add galaxy-to-git fallback for collection installation
Split collection requirements into Galaxy and Git sources and
introduce retry logic with Git fallback to harden CI against
transient Ansible Galaxy API failures.
2026-01-25 11:03:19 +01:00
kevinveenbirkenbach ea39b5b215 ci(ansible): add retry logic for galaxy collection install
Retry ansible-galaxy collection installation up to 10 times with
randomized backoff to mitigate transient Galaxy API outages.

https://chatgpt.com/share/6975e68c-1ae4-800f-810c-91521230f55b
2026-01-25 10:46:45 +01:00
kevinveenbirkenbach f1b4436d57 Removed " to allow the test deploy of multiple apps in one step 2026-01-24 20:30:31 +01:00
kevinveenbirkenbach b2eea91fa4 Activated debug 2026-01-24 16:28:20 +01:00
kevinveenbirkenbach 51e01d0bec Introduced correct order 2026-01-24 14:10:43 +01:00
kevinveenbirkenbach 8bdf43ee87 Minor improvements 2026-01-23 11:17:53 +01:00
kevinveenbirkenbach 49246fb3d8 test(local): reset inventory before init
Rename test-local-init to test-local-reset and wipe inventory directory
before recreating it to ensure clean local test runs.

https://chatgpt.com/share/69729492-8afc-800f-99f1-823512d8604e
2026-01-22 22:20:13 +01:00
kevinveenbirkenbach 0eb7071a49 fix(local-tests): force python3 for local inventory init and stabilize runtime vars
- Force PYTHON=python3 for test-local-init to avoid missing venv python
- Rename test-local-inventory-init-all target to test-local-init
- Fix JSON quoting for --vars in local deploy scripts
- Add RUNTIME default to group_vars
- Improve debug output for initial host vars
- Update user hint in local run script

https://chatgpt.com/share/697222e1-5edc-800f-b9ab-511d8afc3142
2026-01-22 14:14:50 +01:00
kevinveenbirkenbach d2694566e5 feat(runtime): add development runtime marker and unified runtime detection
- introduce env.development marker for local dev runtime
- add cli.meta.runtime module with library API and CLI entrypoint
- detect runtime via ACT/GitHub/marker with explicit RUNTIME override
- use env.development as docker-compose env override
- pass RUNTIME=dev into development inventory generation
- add make setup-development helper

https://chatgpt.com/share/69720fd6-a1c8-800f-b1e2-6909aa63643a
2026-01-22 12:53:42 +01:00