Commit Graph
1189 Commits
Author SHA1 Message Date
kevinveenbirkenbach 4bd4c11e68 fix(ci): reuse existing deploy test container to avoid name conflicts
* Prevent docker run name conflicts when a previous CI run left the container behind
* Reuse and start the existing deploy test container instead of creating a new one

https://chatgpt.com/share/6953d93c-a24c-800f-9334-40c34f768f9f
2025-12-30 14:51:26 +01:00
kevinveenbirkenbach c825dffbf7 ci(deploy): unify test-deploy entrypoint via Makefile and INFINITO_DISTRO
- switch workflow to `make test-deploy` with matrix-driven INFINITO_DISTRO
- centralize container naming via INFINITO_CONTAINER
- add clean-container helper for reliable CI reruns
- remove --distro CLI flag and rely on env-based distro selection
- pass NIX_CONFIG as docker build arg for rate-limit-safe builds

https://chatgpt.com/share/6953d266-aa80-800f-88b8-0413926a81f0
2025-12-30 14:23:44 +01:00
kevinveenbirkenbach 6bc097f96f refactor(email,domain): unify primary domain and TLS handling
- replace localhost special-casing with valid FQDN (infinito.localhost)
- derive system email DOMAIN and HOST directly from DOMAIN_PRIMARY
- align Mailu TLS_FLAVOR with SYSTEM_EMAIL.TLS (mail vs notls)
- tie OIDC_VERIFY_SSL to TLS_ENABLED for consistent test/CI behavior
- update CI deploy script to use new primary domain

https://chatgpt.com/share/695311c0-fbe8-800f-8058-9d40a06b189a
2025-12-30 00:41:46 +01:00
kevinveenbirkenbach 2f41b400d9 Added --diff to e2e deploy tests to see what gets deployed 2025-12-29 23:24:35 +01:00
kevinveenbirkenbach 5175aefaf8 Renamed desktop to workstation 2025-12-29 22:44:20 +01:00
kevinveenbirkenbach 1e5ebbb05f feat(inventory): add --vars-file support for YAML-based host_vars overrides
- add --vars-file CLI option to load host_vars overrides from YAML
- merge vars-file overrides before JSON --vars (JSON takes precedence)
- implement deep-merge logic for YAML vars files
- update CI deploy script to use vars file instead of inline JSON
- add unit test for apply_vars_overrides_from_file
- remove obsolete MASK_CREDENTIALS_IN_LOGS TODO entry

https://chatgpt.com/share/6952e51d-6c50-800f-8764-31dc8c609cdb
2025-12-29 21:31:05 +01:00
kevinveenbirkenbach d734a15ad6 feat(ci,webserver): add localhost DNS + default vhost 404 assertion
- switch CI DNS to CoreDNS-based *.localhost resolution (A/AAAA → loopback)
- set PRIMARY_DOMAIN to localhost for CI deploys
- add explicit DNS resolution assert for test.localhost
- deploy explicit default_server vhost returning 404 text/plain
- assert default vhost behavior via HTTP before app domains exist

https://chatgpt.com/share/6952cf2a-bbd4-800f-b2b8-c4baba66e301
2025-12-29 19:57:41 +01:00
kevinveenbirkenbach a9e1a84b71 feat(ci): run Docker-in-Docker in deploy container via fuse-overlayfs
* Remove host Docker socket (/var/run/docker.sock) and DOCKER_HOST wiring for CI container
* Drop /tmp/gh-action bind usage in CI container + compose runner
* Switch OpenResty volume sources to container-local absolute paths (/var/www, /etc/nginx)
* Ensure docker engine installation also runs when DOCKER_IN_CONTAINER is true
* Add container-only fuse-overlayfs setup and write /etc/docker/daemon.json storage-driver config

https://chatgpt.com/share/69528062-ff74-800f-ae11-a658b5917307
2025-12-29 17:47:03 +01:00
kevinveenbirkenbach d61f11f521 fix(ci): mount /tmp/gh-action into infinito container for compose bind mounts
- ensure files created by Ansible under /tmp/gh-action are visible to Docker host
- prevent file-vs-directory bind mount errors in GitHub CI
- align container filesystem with docker compose host paths

https://chatgpt.com/share/69528062-ff74-800f-ae11-a658b5917307
2025-12-29 14:49:33 +01:00
kevinveenbirkenbach 789ba5a247 - Make Nix non-interactive by default via NIX_CONFIG (accept-flake-config)
- Restore docker service handling outside containers, validate inside containers
- Simplify entry.sh: keep original rebuild/copy logic, remove systemd branching
- Switch CI deploy runner:
  - start only CoreDNS via docker compose
  - start infinito via docker run with systemd, cgroup host access and bind mounts
- Avoid compose limitations (no cgroupns=host support)
- Ensure deterministic container naming for exec-based CI operations

https://chatgpt.com/share/6950110b-111c-800f-bbcd-83a551d5a3b8
2025-12-27 20:47:50 +01:00
kevinveenbirkenbach b207134472 feat(ci): enable systemd-in-docker and use explicit container detection
- Install systemd and dbus in Docker image for CI service tests
- Run systemd as PID 1 with proper container conventions
- Mark container environment explicitly via ENV container=docker
- Simplify container detection to rely on explicit env flag
- Skip host-only tasks (timezone, systemctl handlers) inside containers
- Adjust docker-compose runner for privileged systemd execution
- Reduce CI parallelism to avoid OOM kills

This makes systemd-based Ansible roles reliable in Docker/CI
and avoids fragile virtualization heuristics.

https://chatgpt.com/share/6950110b-111c-800f-bbcd-83a551d5a3b8
2025-12-27 18:14:28 +01:00
kevinveenbirkenbach abd626b4a7 svc-prx-openresty: add MODE_DEBUG wait loop and always dump logs on failure
- wait for container running/healthy in MODE_DEBUG
- dump container status + logs in always block for easier debugging
- enable --debug in deploy test script

https://chatgpt.com/share/694d897b-1fb8-800f-ae7b-a3100cfb3b90
2025-12-25 19:59:03 +01:00
kevinveenbirkenbach 65b1f3f2cd Set --primary-domain docker.test for test-deploys 2025-12-25 15:26:10 +01:00
kevinveenbirkenbach 3e95649a52 ci(compose): keep infinito container alive for exec-based deploy tests
Switch CI deploy tests from docker run to docker compose with a long-lived
infinito service. The container now uses `tail -f /dev/null` as command to
prevent restart loops caused by the default `infinito --help` CMD, which
previously killed exec processes with exit code 137.

Changes include:
- make infinito a stable exec target in compose (no premature restarts)
- add compose helpers (build/up/exec/down) to deploy.sh
- move inventory creation and dedicated deploy into the running container
- add conditional cleanup via EXIT trap (keep stack on failure for debugging)
- support per-distro container naming via INFINITO_DISTRO

This stabilizes CI runs and makes debugging failed deploys possible.

https://chatgpt.com/share/694d3f99-07e4-800f-bc05-3a60c902064d
2025-12-25 14:43:45 +01:00
kevinveenbirkenbach 54969b1f9d test(deploy): force unmasked logs for local debug runs
Set MASK_CREDENTIALS_IN_LOGS=false explicitly in deploy test script
to ensure bootstrap errors are visible during local debugging.

https://chatgpt.com/share/694bd2bf-353c-800f-a0cc-0e4d9f2e550f
2025-12-24 12:59:34 +01:00
kevinveenbirkenbach 46baaacba9 Enabled svc-db- credentials for servers 2025-12-22 11:57:53 +01:00
kevinveenbirkenbach ffd071c64e ci(openresty): share gh-action runtime and scope nginx/www volumes per CI run
- Mount /tmp/gh-action into the CI container so Docker can access run-scoped paths
- Scope OpenResty www and nginx volumes to GITHUB_RUN_ID when running in container
- Avoid leaking host /etc/nginx and /var/www into CI runs
- Remove redundant preflight

https://chatgpt.com/share/694918d0-53b4-800f-93a7-ec82946f3e24
2025-12-22 11:09:12 +01:00
kevinveenbirkenbach c61db9f9e0 feat(ci): silence INSTALL_LOCAL_BUILD output during invokable discovery
* Refactor docker entrypoint to run local build via a single helper function
* Add INSTALL_LOCAL_BUILD_SILENCE flag to fully suppress DEV build output
* Enable INSTALL_LOCAL_BUILD for invokable resolution without noisy logs
* Keep behavior deterministic and non-redundant while preserving failure semantics

https://chatgpt.com/share/694874d7-508c-800f-aa89-d9cef71128dc
2025-12-21 23:29:39 +01:00
kevinveenbirkenbach d85da02db1 Disabled INSTALL_LOCAL_BUILD due to noise 2025-12-21 23:14:48 +01:00
kevinveenbirkenbach b9cb69be8b fix(shellcheck): resolve SC2206 by safe array population
* Replace unquoted array expansion with mapfile-based parsing
* Prevent word splitting and globbing in compute_exclude_csv
* Keep behavior identical while satisfying ShellCheck

https://chatgpt.com/share/69481b6b-02f8-800f-91c8-bbc6592f97b4
2025-12-21 17:07:48 +01:00
kevinveenbirkenbach 30d557ef0d chore(format): add formatter target and apply shfmt/ruff formatting
- Add `make format` target running shfmt + ruff format + ruff check --fix
- Reformat shell scripts with shfmt
- Apply ruff formatting and autofixes across Python code

https://chatgpt.com/share/69480c5a-b0bc-800f-9a2b-770d98c1b6ff
2025-12-21 16:03:48 +01:00
kevinveenbirkenbach f9573460e9 fix(deploy): force local CLI build for invokable resolution
- Drop legacy compatibility wrapper in cli.meta.applications.invokable
- Resolve repository root explicitly via pathlib
- Ensure filter_plugins are importable outside Ansible
- Run invokable discovery with INSTALL_LOCAL_BUILD=1 in deploy tests
- Make deploy.sh fail fast when invokable resolution is unavailable
- Normalize sorting and exclusion logic (drv-* roles, locale-safe sort)
2025-12-21 14:27:21 +01:00
kevinveenbirkenbach cc9c2dceb8 fix(ci,nix): forward NIX_CONFIG into docker build and runtime to avoid GitHub rate limits
- Export NIX_CONFIG in CI jobs and Makefile
- Pass NIX_CONFIG as docker build-arg
- Use NIX_CONFIG only in relevant Dockerfile RUN steps (no secret persistence)
- Forward NIX_CONFIG to test and deploy containers

https://chatgpt.com/share/6947c681-abc8-800f-ba12-de2ff3a7abad
2025-12-21 11:05:31 +01:00
kevinveenbirkenbach 9ef2d86fd9 test(deploy): add preflight check for entry.sh in deploy image
https://chatgpt.com/share/6946f9a9-bf94-800f-adab-f1baf49e1e12
2025-12-20 20:31:47 +01:00
kevinveenbirkenbach fdcc910ce9 fix(tests, docker): pin Python venv inside image and stop leaking host PYTHON
- Define PYTHON and PIP explicitly in Dockerfile (/opt/venvs/infinito)
- Remove PYTHON env passthrough from test container runs
- Prevent host virtualenv paths from breaking container tests
- Align .dockerignore build path handling

https://chatgpt.com/share/6946f090-52b8-800f-919d-d534ae4ea163
2025-12-20 20:16:54 +01:00
kevinveenbirkenbach 45214dc6a4 Call invokable via cli.meta.categories.invokable 2025-12-20 19:07:45 +01:00
kevinveenbirkenbach f775ae9dfa ci(deploy): run deploy tests with --missing and docker-based invokable excludes 2025-12-19 16:07:59 +01:00
kevinveenbirkenbach 87730f8969 Reduced noice and implemented correct workdir use 2025-12-19 16:02:50 +01:00
kevinveenbirkenbach e642e77597 docker: base infinito image on pkgmgr and reuse entry.sh for local build
- Switch Dockerfile build args to PKGMGR_IMAGE_REPO/TAG
- Copy source to INFINITO_SRC_DIR and install infinito via pkgmgr
- Use entry.sh (INSTALL_LOCAL_BUILD) for build-time local override
- Update build/test scripts to new arg/env names

https://chatgpt.com/share/69455d5d-e13c-800f-8c37-fc0ece49d386
2025-12-19 15:12:41 +01:00
kevinveenbirkenbach 0ed6032b91 fix(ci): ensure entrypoint runs and mark bind-mounted repo as git safe
- Force container startup via custom entrypoint to ensure REINSTALL_INFINITO is executed
- Add git safe.directory configuration for /opt/src/infinito to avoid
  "detected dubious ownership" errors in CI bind mounts
- Keep container alive via explicit tail command for subsequent docker exec runs

https://chatgpt.com/share/694530d3-4ca0-800f-9703-252ed9cabef5
2025-12-19 12:02:37 +01:00
kevinveenbirkenbach aea82e8080 ci(deploy): use host Docker socket and local infinito image for deploy tests
- Install Docker CLI in the Docker image (distro-aware)
- Switch deploy container runner from Docker-in-Docker to host /var/run/docker.sock
  with clearer diagnostics when docker/permissions are missing
- Rewrite scripts/tests/deploy.sh to build a local infinito-<distro> image via Make
  and run deployment strictly against that local tag (no pkgmgr/GHCR pulls)

https://chatgpt.com/share/694513c7-daec-800f-a9b5-c8fb25274958
2025-12-19 09:58:43 +01:00
kevinveenbirkenbach 7b2c0df237 Made deploy.sh executable 2025-12-19 09:01:15 +01:00
kevinveenbirkenbach 7f0a6277ed fix(docker): use explicit base image args and harden rm path
https://chatgpt.com/share/6943e445-6704-800f-aa8d-a200ab308e75
2025-12-18 12:23:36 +01:00
kevinveenbirkenbach 000bb510a7 Solved variable bug 2025-12-18 02:00:58 +01:00
kevinveenbirkenbach 7201fb5df5 Optimized image name 2025-12-18 01:59:55 +01:00
kevinveenbirkenbach d5599ac1b8 Solved shellchecker hints 2025-12-17 16:31:28 +01:00
kevinveenbirkenbach 82f3166ca9 Added lint for ansible and fixed integration test implementation 2025-12-17 12:53:49 +01:00
kevinveenbirkenbach d165ed27bc Optimized tests 2025-12-17 12:22:36 +01:00
kevinveenbirkenbach c94cc2d676 Implemented static code testing 2025-12-17 12:12:22 +01:00