Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbach d4d2f8123b ci(nightly): stop cancelling in-progress runs
- Disable cancel-in-progress for nightly workflow
- Allow queued nightly runs instead of killing active pipelines
- Rely on global concurrency for serialization only

https://chatgpt.com/share/6967e809-7df4-800f-a234-b40ead86626f
2026-01-14 20:08:44 +01:00
kevinveenbirkenbach fbc8444e6f ci(e2e): serialize deploy pipeline server -> universal -> workstation
- Run deployment tests sequentially for focused E2E stabilization
- Make universal depend on server
- Make workstation depend on server and universal
- Keep image build as single entry point

https://chatgpt.com/share/6967e809-7df4-800f-a234-b40ead86626f
2026-01-14 20:01:25 +01:00
kevinveenbirkenbach 2506c0a480 ci(release): restrict version workflow to v* tags on master only
- Remove manual workflow_dispatch trigger
- Gate release execution to tags reachable from master
- Prevent accidental releases from feature branches
2026-01-14 19:56:00 +01:00
kevinveenbirkenbach 7332cdf4fc ci(workflows): split release logic and add nightly release check
- Rename CI entry workflows to "entry-*" (push, PR, nightly)
- Replace monolithic ci-version workflow with reusable release-version workflow
- Add entry-push-version wrapper (tag push + manual dispatch)
- Add nightly job that triggers release workflow for missing version images
- Enable GHCR login for manifest-based existence checks

https://chatgpt.com/share/6967cff2-1584-800f-a2d3-1ef7a824f62f
2026-01-14 19:48:36 +01:00
kevinveenbirkenbach 48d3afa793 ci: introduce global CI concurrency with nightly priority
Unify PR, push, nightly and release workflows under a single global
concurrency group (infinito-ci-global) to ensure only one CI run executes
at a time.

Configure the nightly workflow to run daily at 00:00 UTC and to cancel any
in-progress CI runs, giving nightly jobs priority for cleanup and full
validation.

This prevents overlapping CI runs, reduces runner/disk pressure, and
enforces a strictly serialized CI pipeline.

https://chatgpt.com/share/6967d742-9178-800f-ad20-f1c3f77f69bc
2026-01-14 18:49:49 +01:00
kevinveenbirkenbach 64f7a7d54d ci: serialize PR/push/scheduled/release runs via concurrency groups
Add top-level concurrency blocks to CI entry workflows (PR, push, schedule,
version) to avoid overlapping runs and reduce resource contention on runners.

Also refactor code-analyses workflow dependencies so deploy:workstation waits
for deploy:server to complete (prioritize server debugging), and do minor
whitespace/newline cleanups in web-opt-rdr-domains role files.

https://chatgpt.com/share/6967cff2-1584-800f-a2d3-1ef7a824f62f
2026-01-14 18:18:31 +01:00
kevinveenbirkenbach 4364d42f98 Switched to dedicated load handler 2026-01-14 17:46:58 +01:00
kevinveenbirkenbach b8cdf58beb Hardened variable 2026-01-14 17:41:32 +01:00
kevinveenbirkenbach 217bb4d7f5 fix(web-app-listmonk): make database install/upgrade idempotent and CI-safe
Refactor Listmonk database setup into a dedicated task routine.

- Add 01_database.yml for centralized DB lifecycle handling
- Detect reachable and empty database reliably
- Run --install only on empty databases
- Run --upgrade only when DB is initialized and MODE_UPDATE is enabled
- Tolerate SIGPIPE (rc=141) from yes-pipe via failed_when
- Use docker compose run for non-interactive install/upgrade

This prevents failing CI runs and ensures deterministic Listmonk bootstrap.

https://chatgpt.com/share/6967c1e9-0818-800f-a327-7407195cc281
2026-01-14 17:18:37 +01:00
kevinveenbirkenbach 28526c1e63 Introduced MASTODON_OIDC_ENABLED variable 2026-01-14 17:10:25 +01:00
kevinveenbirkenbach e652c42729 sys-cleanup: remove unsafe /tmp wipe and risky build cache cleanup
- Stop deleting /tmp and /var/tmp to avoid breaking running processes and Ansible module execution
- Drop Cargo, Maven and Gradle cache cleanup to prevent race conditions and CI flakes
- Keep lightweight cache cleanup (apt/dnf/pacman, pip, npm, yarn, go-build)
2026-01-14 16:43:06 +01:00
kevinveenbirkenbach 456bc6f5f0 ci: add aggressive cleanup for docker, nix and system caches to prevent disk pressure
Introduce a new sys-cleanup role to perform cross-distro cleanup (apt, pacman,
dnf, yum, language caches, temp dirs and journald) for CI/container environments.

Add aggressive Docker prune handler (system + buildx + builder + log truncate)
to prevent GitHub Actions images from growing uncontrollably.

Integrate Nix garbage collection and store optimisation for CI runs.

Cleanup is guarded by MODE_CLEANUP and DOCKER_IN_CONTAINER to ensure it never
runs on real production hosts.

https://chatgpt.com/share/6967ad99-8e50-800f-b4e9-4cd8e45c29bc
2026-01-14 16:28:20 +01:00
kevinveenbirkenbach cd5484950a docker-compose: aggressively prune docker data in CI containers to avoid huge images
Add a docker-compose handler that aggressively prunes unused Docker data
(system, volumes, buildx cache and legacy builder cache) when running inside
a container.

This is required for GitHub Actions runs, otherwise the resulting Docker image
grows to ~14GB due to accumulated layers, caches and volumes.

The prune handler is guarded by DOCKER_IN_CONTAINER to ensure it only runs in
CI/container environments and never on real production hosts.

https://chatgpt.com/share/6967ad99-8e50-800f-b4e9-4cd8e45c29bc
2026-01-14 15:51:59 +01:00
kevinveenbirkenbach 00de1c1d1d Disabled AI models for act und github actions tests because they are to huge 2026-01-14 15:33:03 +01:00
kevinveenbirkenbach 6b7e172028 Replaced falsy mastodon by matomo 2026-01-14 15:26:19 +01:00
kevinveenbirkenbach 510197cc1f ci: always keep stack on failure in deploy-app workflow
Remove KEEP_STACK env handling and always pass --keep-stack-on-failure
to deploy.sh to preserve containers and logs for debugging after failed
CI runs.

https://chatgpt.com/share/6967a413-7a24-800f-8837-514133a57072
2026-01-14 15:11:23 +01:00
kevinveenbirkenbach 334c4b70c7 fix: stabilize rapid deploy env, improve entry.sh debugging and harden contact config
- Fix Makefile rapid deploy target to properly export INFINITO_DISTRO
- Capture stdout/stderr from entry.sh init and raise explicit error on failure
- Add fallback contact addresses for demo environments (email, matrix, mastodon, etc.)
- Quote mailto URLs and identifiers to ensure valid YAML output
- Replace placeholder legal contact with demo user

This prevents YAML parser errors (e.g. `url: mailto:`), improves CI diagnostics,
and ensures desktop contact menu is always rendered with valid defaults.

https://chatgpt.com/share/69679c78-f338-800f-be86-54b3195d19b7
2026-01-14 14:38:42 +01:00
kevinveenbirkenbach 8d02830d37 fix(web-app-listmonk): use shared database container instead of compose postgres service
Switch Listmonk database access from docker compose exec postgres to docker exec on the shared database container.
This fixes initialization and upgrade failures when using a shared PostgreSQL stack.

- Introduce LISTMONK_EXEC_DATABASE helper command
- Use shared DB container for schema checks and SQL updates
- Prevent failures when no local postgres service exists in listmonk compose project

https://chatgpt.com/share/69679b64-607c-800f-922e-7dc282498bc4
2026-01-14 14:34:22 +01:00
kevinveenbirkenbach 308003903c Set default value for plugins 2026-01-14 14:06:43 +01:00
kevinveenbirkenbach 3f667aadda ci: switch CI images to latest tag and skip compose build in deploy
- Build CI images workflow now always publishes :latest instead of ci-<sha>
- Removed obsolete tag input and CI tag computation logic
- Deploy in real GitHub Actions now pulls ghcr.io/.../infinito-<distro>:latest
- Skip docker compose build when INFINITO_NO_BUILD=1
- Respect INFINITO_IMAGE for --missing image existence check

This ensures deploy jobs use the already published production image and never rebuild in CI.

https://chatgpt.com/share/69678e2c-7d7c-800f-b422-15e98c8e4b6e
2026-01-14 13:37:54 +01:00
kevinveenbirkenbach 7a2b1dcedd Reverted condition for ebtter readability 2026-01-14 13:20:25 +01:00
kevinveenbirkenbach 4a008d8b97 ci: centralize INSTALL_LOCAL_BUILD handling across Makefile, compose and runner
- Control INSTALL_LOCAL_BUILD centrally via Makefile depending on CI context:
  - real GitHub Actions runner: disable local rebuild
  - act and local runs: enable local rebuild
- Pass INSTALL_LOCAL_BUILD through docker-compose using environment expansion
- Remove hardcoded INSTALL_LOCAL_BUILD=1 from CI container runner
- Keep Dockerfile local-build during image build for CI images

This ensures consistent local/CI behavior and avoids unnecessary rebuilds on real CI runners.

https://chatgpt.com/share/6967876f-e400-800f-90ec-fe870e565bf3
2026-01-14 13:09:13 +01:00
kevinveenbirkenbach 0cad360d29 ci: refactor deploy workflows and make CI build behaviour explicit
- Replace legacy MODE env with TEST_DEPLOY_TYPE across workflows and scripts
- Route CI deploy and discovery through Makefile targets
- Rename deploy-one-app.sh to deploy-app.sh and update all call sites
- Fix Makefile recursion and ensure scripts are executed directly
- Ensure JSON discovery output is clean via silent make target
- Make MISSING_ONLY default true via Makefile
- Respect INFINITO_NO_BUILD in compose up to avoid implicit rebuilds in CI
- Keep explicit build step before compose up for deterministic CI runs
- Improve deploy logging (test_deploy_type instead of mode)

Result:
- Deterministic CI behaviour
- No accidental docker compose rebuilds on up
- Single source of truth for deploy orchestration
- Cleaner env contract between workflows, make, bash and python

https://chatgpt.com/share/69678024-fe38-800f-b877-add46aa55190
2026-01-14 12:37:41 +01:00
kevinveenbirkenbach 6e71dcb30b fix(sys-ctl-cln-docker): prevent docker prune during svc-* role deploys
Suppress docker cleanup service flush while svc-* roles are deploying to avoid
side effects where required networks (e.g. MariaDB, OpenLDAP, Ollama) get
deleted before the stack is fully deployed.

Introduce role-aware logic based on group_names and add
SYS_CTL_CLN_DOCKER_SERVICE_ROLE_DEPLOY helper flag.

https://chatgpt.com/share/69677353-a86c-800f-8306-d88c0b02b9fb
2026-01-14 11:43:24 +01:00
kevinveenbirkenbach 6bbd95f195 Ensure .env symlink is always created by enabling force mode.
This prevents the deployment from failing when the target path already exists
as a regular file (e.g. copied by Ansible temp handling):

  Error: src file does not exist, use 'force=yes' if you really want to create the link
  path: /opt/docker/bigbluebutton/services/repository/.env
  src:  /opt/docker/bigbluebutton/.env/env

Using force guarantees idempotent behavior and replaces any pre-existing file
with the correct symbolic link.

https://chatgpt.com/share/696771a3-a414-800f-ac7a-e70addb19347
2026-01-14 11:36:14 +01:00
kevinveenbirkenbach d2b677df91 refactor(sys-svc-docker): unify docker, compose, buildx and python deps install with hard-fail
- Merge docker engine, compose, buildx and python dependencies into a single package task
- Remove silent omit logic and fail hard on unsupported distributions
- Ensure Docker Compose v2 requirements (buildx) are always installed
- Improve CI safety by preventing partial or broken Docker installations

https://chatgpt.com/share/69676a55-f02c-800f-88d5-d5ac4991ff15
2026-01-14 11:05:01 +01:00
kevinveenbirkenbach 517ccf44c0 ci: replace rest deploy mode with universal and add universal stage
- Rename CI workflow and MODE from "rest" to "universal"
- Extend CLI and test runner to support universal deploy type
- Add tasks/stages/02_universal.yml for universal host type
- Update discover logic to use universal app selection
- Remove legacy rest->server mapping and obsolete select helper

https://chatgpt.com/share/6967625e-81c8-800f-8592-5d5b8edec1e2
2026-01-14 10:31:06 +01:00
kevinveenbirkenbach 3c567ec35b fix(openresty): ensure nginx config directory exists before bootstrap copy
Create the nginx configuration directory before writing the base nginx.conf
to avoid failures when the path does not yet exist.

https://chatgpt.com/share/69675c37-07c8-800f-92bd-393ec344f35c
2026-01-14 10:04:50 +01:00
kevinveenbirkenbach 13bd7c4f06 ci(build): fix disk pressure step by removing unbound NIX_CONFIG reference
- Remove debug echo of NIX_CONFIG to avoid nounset failure
- Prevent workflow crash when NIX_CONFIG is only passed via build-args

https://chatgpt.com/share/69675682-ef7c-800f-a8a3-c158b829f498
2026-01-14 09:40:28 +01:00
kevinveenbirkenbach e63f18a403 ci(deploy): keep stack only when running under act
- Default KEEP_STACK to true only for act runs
- Disable KEEP_STACK in GitHub Actions to prevent runner disk exhaustion
- Remove explicit KEEP_STACK overrides from deploy workflows

https://chatgpt.com/share/696752fb-befc-800f-9cf1-57093178297a
2026-01-14 09:35:01 +01:00
kevinveenbirkenbach 06e850f4bf ci(build): switch build cache to GHA and add disk pressure diagnostics
- Replace registry-based build cache with GitHub Actions cache (type=gha)
- Add disk usage diagnostics before and after builds
- Enable buildx installation for deterministic behavior
- Add aggressive cleanup to avoid runner disk exhaustion

https://chatgpt.com/share/696752fb-befc-800f-9cf1-57093178297a
2026-01-14 09:25:26 +01:00
kevinveenbirkenbach ef76ccad43 Activated flushing of handlers 2026-01-14 08:46:33 +01:00
kevinveenbirkenbach 25df020f9f Solved loading order bug 2026-01-14 01:58:29 +01:00
kevinveenbirkenbach 60a9fb7393 **fix(openldap): allow RootDN manage access to cn=config for schema tooling**
Grant `${LDAP_ROOT_DN}` manage rights on the `config` database (in addition to SASL EXTERNAL) so tools like `ldapsm` can read/write `cn=config` over LDAP and no longer fail with “No such object”.

https://chatgpt.com/share/6966da0f-b458-800f-8e40-97a919b976f5
2026-01-14 01:08:44 +01:00
kevinveenbirkenbach 5722311071 fix(openldap): normalize cn=config DNs for module and backend entries
- Normalize OPENLDAP_MODULE_DN to always include ,cn=config suffix
- Normalize OPENLDAP_DATA_BACKEND_DN to always include ,cn=config suffix
- Prevent ldapmodify/ldapadd failures due to missing superior DN

https://chatgpt.com/share/6966dc9d-03c8-800f-a9c7-e6d479694bb3
2026-01-14 01:00:21 +01:00
kevinveenbirkenbach 9639496280 fix(openldap): add config backend to slapd.conf and read module DN from filesystem
- Add explicit `database config` backend so cn=config is accessible via ldapi
- Fix access rules for EXTERNAL SASL on cn=config
- Resolve module DN from /etc/ldap/slapd.d instead of ldapsearch
- Simplify docker-compose role inclusion and network wiring

https://chatgpt.com/share/6966da0f-b458-800f-8e40-97a919b976f5
2026-01-14 00:49:32 +01:00
kevinveenbirkenbach 638d9f2dfa Docker optimations 2026-01-14 00:37:48 +01:00
kevinveenbirkenbach d11c343a15 fix(svc-db-openldap): install python docker sdk dependencies for docker_network task
https://chatgpt.com/share/6966cd1c-7048-800f-a6ef-b116935c4ac7
2026-01-13 23:54:10 +01:00
kevinveenbirkenbach 3cf7d20d86 feat(test-deploy): add debug toggle and rapid deploy target
- add --debug / --no-debug flag to deploy test CLI and runner
- make Ansible debug mode optional instead of always enabled
- extend deploy.sh with debug flag forwarding
- add make target test-deploy-rapid for fast single-app deploys

https://chatgpt.com/share/6966c80c-661c-800f-8fb9-769659da290d
2026-01-13 23:32:37 +01:00
kevinveenbirkenbach 28f3299d04 Optimized docker logic to prevent to early trriggering aof services depending on successfull docker installations 2026-01-13 22:34:00 +01:00
kevinveenbirkenbach 6d900088eb Added debugging speed up flags 2026-01-13 22:31:07 +01:00
kevinveenbirkenbach 77c3e6b9fa fix(openldap): robust bootstrap via slaptest, deterministic MDB init, and hardened runtime perms
- Rework Docker image to start from a clean slapd.d and data dir
- Bootstrap cn=config via slaptest from generated slapd.conf
- Deterministic MDB initialization (creates data.mdb on first start)
- Enforce correct ownership and permissions for slapd, config, and DB
- Add logging and fatal guards for broken bootstrap states
- Make memberof check optional in healthcheck
- Ensure base LDAP tree and OUs via Ansible (root, people, groups, roles)
- Cleanup Docker hardening vars

Result: stable, reproducible OpenLDAP container startup with clean volumes.

https://chatgpt.com/share/6966b019-d604-800f-86c2-d6ee04129130
2026-01-13 21:50:20 +01:00
kevinveenbirkenbach dc4ef534c0 Added newline at end of file 2026-01-13 21:33:58 +01:00
kevinveenbirkenbach 32d39bd981 Used correct conditions for local test deploy 2026-01-13 21:33:05 +01:00
kevinveenbirkenbach 585fcb4b53 Used correct relative path 2026-01-13 21:32:25 +01:00
kevinveenbirkenbach 6b7b67681e fix(ci): unblock systemd startup and stabilize Docker healthcheck
Ensure systemd is started immediately as PID 1 in the infinito container
to avoid blocking on pkgmgr during boot. Increase compose runner timeout
to match healthcheck window and make healthcheck script executable in the
image.

This fixes containers getting stuck in "starting" state and makes CI
startup deterministic.

https://chatgpt.com/share/696683a2-9350-800f-a0cf-587d4013cb29
2026-01-13 19:02:43 +01:00
kevinveenbirkenbach 8c82db3556 feat(ci): add Docker healthcheck and wait for healthy container in compose runner
Add a systemd-based Docker HEALTHCHECK that verifies:
- systemd readiness
- infinito CLI availability and executability
- infinito CLI smoke test (--help)

Update CI compose runner to wait for Docker health status instead of
manual systemd polling. The runner now:
- resolves the infinito container via docker compose
- waits for healthy state
- dumps journalctl and docker logs on timeout

This removes boot race conditions and makes container readiness deterministic.

https://chatgpt.com/share/696683a2-9350-800f-a0cf-587d4013cb29
2026-01-13 18:40:33 +01:00
kevinveenbirkenbach 75de900549 test(compose): dump last 200 log lines when systemd wait times out
Extend wait_for_systemd_ready() to automatically print the last 200 log
lines on timeout for easier CI debugging.

- Adds journalctl output (preferred for systemd containers)
- Adds docker logs fallback
- Improves timeout error diagnostics

https://chatgpt.com/share/69667eca-088c-800f-af12-5682d0038351
2026-01-13 18:19:37 +01:00
kevinveenbirkenbach 673dab59d2 ci(deploy): prevent docker compose builds in GitHub Actions
Switch CI detection to GITHUB_ACTIONS and disable compose builds via
INFINITO_NO_BUILD=1. The deploy workflows now rely on pulling the prebuilt
CI image instead of triggering local Docker builds.

- Remove legacy UP_BUILD handling
- Enable --no-build in compose when running in real CI
- Keep local/act builds working as before

https://chatgpt.com/share/69666e0b-f08c-800f-93fd-611eced4b100
2026-01-13 17:08:34 +01:00
kevinveenbirkenbach c4a0174f5c ci(build): switch buildx cache from gha to ghcr registry cache
Replace GitHub Actions cache backend with GHCR registry-based build cache
to avoid intermittent 5xx errors and improve reliability for multi-distro
Buildx jobs.

Each distro now uses its own cache namespace:
  infinito-cache-<distro>:buildcache

https://chatgpt.com/share/69665ae7-37f4-800f-b287-e095714e80a4
2026-01-13 16:34:36 +01:00