Commit Graph
55 Commits
Author SHA1 Message Date
kevinveenbirkenbach 66bbffe963 Fix docker image reference scan hints 2026-03-25 19:24:53 +01:00
kevinveenbirkenbach 2e37a3689f Merge branch 'main' into feature/lint
# Conflicts:
#	Dockerfile
#	scripts/administration/ghcr/cleanup_ci_images.sh
#	scripts/meta/wait/image.sh
2026-03-22 21:51:23 +01:00
kevinveenbirkenbach fb6c85783f Fix hadolint warning in slim Docker stage 2026-03-21 12:52:03 +01:00
kevinveenbirkenbach 0cfd8414d2 fix: resolve hadolint DL3059 warning 2026-03-21 10:36:35 +01:00
kevinveenbirkenbach 3b11d7f469 feat(packaging): add distro packages and install via package metadata 2026-03-19 02:53:15 +01:00
kevinveenbirkenbach 9766f8e8b3 feat(dev-python): install Python 3.11+ by default
- add cross-distro dev-python installer script and wire it into role + Dockerfile
- regenerate dockerignore from gitignore on make build and ignore logs/
- harden sys-pip-install break-system-packages support probe
- raise project requires-python to >=3.11
2026-02-21 23:45:41 +01:00
kevinveenbirkenbach 9bc6d3f431 docker: install ssh client in CI image for Ansible controller
Extend the systemd/dbus installation step to include the SSH client on all
supported distros, fixing Ansible controller failures caused by a missing
`ssh` binary.

https://chatgpt.com/share/698a3356-f018-800f-80e2-f327f00ce65f
2026-02-09 20:19:34 +01:00
kevinveenbirkenbach 7bb15d1b5e refactor(container): rename docker-container/docker services to sys-svc-container and update all references, schedules, tests, and templates
https://chatgpt.com/share/6985b09d-8ff8-800f-800c-7a694c0983e2
2026-02-06 10:12:31 +01:00
kevinveenbirkenbach 18acafa9dc ci(images): build & push full+slim CI images
- Build matrix now includes variants: full + slim
- Tag slim images with -slim suffix and use Dockerfile target selection
- Use dedicated gha cache scopes per distro+variant
- Update release checks/retag/promote scripts to handle slim images too

https://chatgpt.com/share/69701a4e-b000-800f-be7e-162dcb93b1d2
2026-01-21 01:46:52 +01:00
kevinveenbirkenbach e23ffdc2aa feat(nix): make flake config non-interactive via nix.conf and simplify NIX_CONFIG handling
Enable accept-flake-config globally in the image to avoid interactive prompts.
Remove automatic NIX_CONFIG injection from Makefile and only export it when explicitly set.

https://chatgpt.com/share/696fb4fc-8cf0-800f-af72-f5d6428be14c
2026-01-20 18:01:23 +01:00
kevinveenbirkenbach fda49ca30e fix(ci,nix): make flake config non-interactive and add safe pkgmgr debug
- Stop baking NIX_CONFIG into Docker image layers
- Build effective NIX_CONFIG via Makefile using real multiline config
- Always allow flake-provided nixConfig non-interactively
- Add sanitized rescue/debug block for pkgmgr update (no credential leaks)
- Improve CI diagnostics for GitHub token / nix access issues

https://chatgpt.com/share/696f8687-4444-800f-ab86-021bcb35a7a6
2026-01-20 14:43:09 +01:00
kevinveenbirkenbach 659b45f7a2 build(docker): enforce and run base image slim.sh cleanup during build
- ensure slim.sh exists in pkgmgr base image
- execute safe verbose cleanup before entrypoint
- reduce final Docker image size without touching runtime files

https://chatgpt.com/share/696f4ab6-fae8-800f-9a46-e73eb8317791
2026-01-20 10:54:55 +01:00
kevinveenbirkenbach a323f2199d optimized code tests 2026-01-15 02:07:31 +01:00
kevinveenbirkenbach 8ea56548d1 Optimized INFINITO_BUILD_LOCAL 2026-01-15 01:53:32 +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 3a5912845f fix(docker): remove implicit cgroup volume from base image
Drop VOLUME /sys/fs/cgroup from Dockerfile and rely on docker-compose
to mount cgroups explicitly for systemd-based CI containers.
Prevents creation of anonymous volumes in derived images.

https://chatgpt.com/share/695f94d9-d4a0-800f-a9eb-19e67445a0fe
2026-01-08 12:28:07 +01:00
kevinveenbirkenbach 6f9e887f35 fix(docker,systemd): disable systemd-firstboot in container + harden docker restart diagnostics
- mask systemd-firstboot and first-boot-complete in Dockerfile to prevent systemd boot hang in CI/compose
- ensure machine-id is initialized during image build
- add early assertions for systemd availability and PID 1 correctness in docker role
- replace blocking docker restart with non-blocking restart + 60s wait and detailed debug dump on failure
- normalize task numbering (fuse-overlayfs, reset) for clarity

https://chatgpt.com/share/6953fbef-c508-800f-ac06-39f64f92f008
2025-12-30 17:20:59 +01:00
kevinveenbirkenbach d65749157f chore(docker): silence hadolint version pinning warnings for multi-distro CI install
Ignore DL3008, DL3033 and DL3041 for the systemd/dbus installation step.
This image is used for multi-distro CI testing, where package version
pinning is neither portable nor desirable.

https://chatgpt.com/share/6950ffb3-1970-800f-9533-a115905ef6b7
2025-12-28 10:59:54 +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 71604e199e refactor(sys-svc-docker): split docker CLI (container) from engine (host)
- move distro-aware docker CLI installation into shared install-cli.sh
- use install-cli.sh only in Dockerfile (container context)
- install docker engine and compose only on hosts via Ansible
- guard engine installation with DOCKER_IN_CONTAINER
- avoid mixing Docker Inc. repo with Debian docker.io packages

https://chatgpt.com/share/694c3985-f228-800f-ac5c-b0ae41558596
2025-12-24 20:05:24 +01:00
kevinveenbirkenbach b48c26ef80 refactor(user-root): move OpenSSH client install to role and modularize root SSH key setup
- Remove openssh-client from Dockerfile to avoid hard dependency
- Add user-root SSH variable definitions for private/public key paths
- Split root SSH key generation into dedicated task file
- Ensure idempotent key creation and output handling
- Improve maintainability by decoupling container build from user provisioning

https://chatgpt.com/share/6948403b-7440-800f-bb45-72456827a6c5
2025-12-21 19:45:11 +01:00
kevinveenbirkenbach 70497bd404 fix(docker): install openssh-client on Debian/Ubuntu images
https://chatgpt.com/share/6947ca03-4b00-800f-b9a3-6a9dc148a739
2025-12-21 11:20:39 +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 fcfb37beba fix(dockerfile): prevent CentOS Stream from matching Fedora install path
- Match Fedora Docker CLI install only on ID=fedora
- Remove fedora from RHEL/CentOS ID_LIKE matching
- Ensure CentOS Stream 9 is handled by the RHEL/CentOS branch
- Avoid invalid docker-cli/moby-engine installs on CentOS

https://chatgpt.com/share/69472a4d-ac6c-800f-b5e1-e2fcd815ded0
2025-12-21 00:05:34 +01:00
kevinveenbirkenbach e3dcd4b2a6 fix(dockerfile): avoid curl conflicts on CentOS Stream and reduce redundant installs
- Drop explicit ca-certificates/curl installs on Fedora and RHEL/CentOS paths
- Rely on pkgmgr base images for common tooling
- Prevent curl vs curl-minimal conflicts on CentOS Stream 9
- Keep Docker CLI installation logic unchanged

https://chatgpt.com/share/69472a4d-ac6c-800f-b5e1-e2fcd815ded0
2025-12-20 23:59:13 +01:00
kevinveenbirkenbach 8c6d694c66 Solved Dockerfile bug 2025-12-20 23:47:51 +01:00
kevinveenbirkenbach 103659a534 refactor(deploy): modularize dedicated deploy CLI and fix make cwd issue
- Split dedicated deploy logic into focused modules (apps, modes, paths, proc, runner)
- Ensure all make targets run from the repository root via explicit cwd handling
- Fix "make: No rule to make target" errors caused by incorrect working directory
- Slim down __main__ to a thin CLI entrypoint
- Rework unit tests into one file per module and expand coverage

https://chatgpt.com/share/69472632-9740-800f-962c-bcb4474963d6
2025-12-20 23:41:41 +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 8c845625ae fix(dockerfile): satisfy hadolint warnings (pipefail, quoting, pin ignores)
https://chatgpt.com/share/69457254-bde0-800f-b8b8-b6bfe7eb330d
2025-12-19 16:42:03 +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 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 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 be22f8ec1f Required to change back to /opt/venvs/ due to runner and root executing infinito 2025-12-18 01:47:31 +01:00
kevinveenbirkenbach 2cf7e6c81d Changed venv path 2025-12-18 00:47:34 +01:00
kevinveenbirkenbach dc846b0672 refactor(cli): move main entrypoint to cli package and standardize execution
- Move main.py to cli/__main__.py and expose via console script
- Switch Makefile execution to `python -m cli`
- Remove fragile Docker symlink to main.py
- Ensure infinito console script is available via venv PATH
- Update tests and documentation to reflect new CLI structure
- Improve logging location and permissions (XDG_STATE_HOME)
- Handle Ctrl+C gracefully with POSIX-compliant exit code (130)

https://chatgpt.com/share/6942f140-fb8c-800f-a13a-641ebf1c644e
2025-12-17 19:06:49 +01:00
kevinveenbirkenbach c94cc2d676 Implemented static code testing 2025-12-17 12:12:22 +01:00
kevinveenbirkenbach e1cb7c2260 Docker and Makefile optimations 2025-12-17 09:22:45 +01:00
kevinveenbirkenbach f443300f70 Used PKGMGR as Basis for infinito.nexus 2025-12-16 22:53:30 +01:00
kevinveenbirkenbach c0980e91c0 Fix CI Docker-in-Docker deployment, introduce vfs storage-driver, add inner dockerd bootstrap, enable portable json-file logging when running inside a container, and update workflow triggers for multi-branch testing.
Includes:
- Rewrite of test-deploy workflow to use isolated inner dockerd with privileged mode.
- Switch logging drivers to 'json-file' when IS_CONTAINER=true for compatibility with non-systemd CI runners.
- Adjust Dockerfile to install docker CLI and simplify package setup.
- Improve inventory creation and deploy steps for CI stability.
- Fully compatible with Ansible 2.20 variable handling.

Conversation reference:
https://chatgpt.com/share/6930e285-9604-800f-aad8-7a81c928548c
2025-12-04 02:24:10 +01:00
kevinveenbirkenbach 9ecfd8a762 Added shallow to Dockerfile 2025-12-03 18:01:08 +01:00
kevinveenbirkenbach c424afa935 Fix CLI workflow and container startup
- Updated GitHub Actions workflow to call `infinito make ...` inside container
- Simplified Dockerfile CMD to run `infinito --help` and keep container alive
- Adjusted docker-compose.yml to use explicit image name

See: https://chatgpt.com/share/68cde606-c3f8-800f-8ac5-fc035386da87
2025-09-20 01:24:20 +02:00
kevinveenbirkenbach 0168167769 Docker: introduce docker-compose setup and simplify CMD
- Replaced ENTRYPOINT/CMD with a single CMD ["infinito --help"] in Dockerfile
- Added docker-compose.yml with service 'infinito', port bindings, volumes, networks
- Added env.sample for BIND_IP, SUBNET, GATEWAY defaults

See conversation: https://chatgpt.com/share/68cda4d5-1fe0-800f-a7f7-191cb8b70d84
2025-09-19 21:22:45 +02:00
kevinveenbirkenbach 44e0fea0b2 Renamed cymais to infinito and did some other optimations and logout implementations 2025-07-29 16:35:42 +02:00
kevinveenbirkenbach a580f41edd Replaced aur_builder by builder in dockerfile 2025-07-20 18:39:54 +02:00
kevinveenbirkenbach e4ce3848fc Optimized for github workflow 2025-07-16 14:22:47 +02:00
kevinveenbirkenbach 8113e412dd Deactivated tests during docker build, in the hope that it now passes the git workflow 2025-07-16 14:07:20 +02:00
kevinveenbirkenbach 94796efae8 Replaced cp by rsync to keep .git folder for workflow 2025-07-16 13:45:33 +02:00
kevinveenbirkenbach 9d8e48d303 Added explicit testing during container build. It isn't possible to build the container if it doesn'nt pass the tests. 2025-07-16 12:46:56 +02:00