Commit Graph
334 Commits
Author SHA1 Message Date
kevinveenbirkenbach ca1bf7832e Reorganize image scripts and PR wait logic 2026-03-18 11:26:12 +01:00
kevinveenbirkenbach edfd891eff chore: rename master references to main 2026-03-17 15:59:23 +01:00
kevinveenbirkenbach 43e623ccbd Simplify deploy streaming by removing tail buffering 2026-03-16 12:24:53 +01:00
kevinveenbirkenbach 773c0a2640 Lint 2026-02-22 14:32:07 +01:00
kevinveenbirkenbach 8cbbfb4d06 fix(deploy): use infinito CLI for inventory creation in container flows 2026-02-22 14:09:48 +01:00
kevinveenbirkenbach ec30948546 fix(deploy): use bash -lc for commands with pipefail 2026-02-21 16:05:42 +01:00
kevinveenbirkenbach 0710c41f91 fix(ci): run mirror resolver with venv python in container 2026-02-20 11:25:46 +01:00
kevinveenbirkenbach 3e9de04704 refactor: move server inventories into bundles 2026-02-13 10:14:17 +01:00
kevinveenbirkenbach 6efde55647 refactor(dashboard): rename web-app-desktop to web-app-dashboard and update service toggle
* replace compose.services.desktop with compose.services.dashboard across all roles
* rename role web-app-desktop to web-app-dashboard
* rename sys-front-inj-desktop to sys-front-inj-dashboard
* update resolver mapping to include web-app-dashboard when dashboard is enabled
* adjust CSP filters to reference dashboard for frame-ancestors handling
* update lookup plugins, filter plugins, templates, vars and run_once flags
* migrate all tests to dashboard naming and service key
* update role dependencies and port mappings
* remove legacy desktop role and variables

BREAKING CHANGE:
The service key compose.services.desktop has been renamed to compose.services.dashboard.
All custom configs, inventories, or overrides must be updated accordingly.

https://chatgpt.com/share/698da7ad-1978-800f-82b4-4755b17be026
2026-02-12 11:12:49 +01:00
kevinveenbirkenbach 32fe49c00f feat(cli/deploy): retry docker compose up on transient registry errors
Wrap `docker compose up` in a retry loop (6 attempts, 30s delay) to mitigate
temporary Docker Hub / registry 5xx pull failures. Add unit tests covering
success-after-retries, exhaustion behavior, and no-sleep on first success.

https://chatgpt.com/share/698b8d67-0084-800f-ad33-ec8933dfba15
2026-02-10 20:56:11 +01:00
kevinveenbirkenbach 5acce545e1 refactor(cli): remove sound, alarm and server-type flags
Drop the sound/alarm subsystem and deprecated CLI flags.

* Remove --sound, --no-signal and --alarm-timeout
* Remove server-type flag (-T / TEST_DEPLOY_TYPE)
* Delete sound-related modules
* Simplify RunConfig and runner error handling
* Update help output, scripts and tests
* Remove optional audio extras from pyproject.toml

https://chatgpt.com/share/698b74f1-0c0c-800f-98c4-183697d6a2a0
2026-02-10 19:10:37 +01:00
kevinveenbirkenbach 449781fa73 fix(ci): make sufficient_storage JSON-safe and stabilize test matrix generation
Switch sufficient_storage CLI to support JSON output and update CI matrix
generation to use JSON-only pipelines, preventing roles from collapsing
into a single matrix entry.
2026-02-10 14:06:54 +01:00
kevinveenbirkenbach 2eaa566efb refactor(cli): decouple invokable discovery from Ansible filter plugins
Switch cli.meta.applications.invokable to call module_utils.invokable.list_invokable_app_ids
directly instead of using filter_plugins.get_all_invokable_apps.

This removes the Ansible filter dependency from the CLI, making invokable discovery
pure-Python, deterministic, and easier to test.

https://chatgpt.com/share/698b225f-2c2c-800f-bd0e-624e82e5460a
2026-02-10 13:19:32 +01:00
kevinveenbirkenbach 3c8f99d53a Removed legacy args 2026-02-10 11:56:21 +01:00
kevinveenbirkenbach df9a23ceed feat(ci): unify invokable app discovery and add lifecycle filtering
- Move server/workstation/universal resolution into Python CLI
- Add optional --lifecycles filter to cli.meta.applications.type
- Gate invokable roles by galaxy_info.lifecycle in module_utils.invokable
- Replace legacy resolve-invokable-roles.sh with CLI-based implementation
- Apply global hard excludes consistently across all deploy types
- Fix SC2086 issues and make lifecycle argument handling shell-safe
- Extend unit tests to cover lifecycle forwarding and normalization

https://chatgpt.com/share/698b0039-c4c4-800f-b962-7033324c07a8
2026-02-10 11:50:09 +01:00
kevinveenbirkenbach 84782f3b22 refactor(invokable): centralize app discovery, add type grouping, and derive deploy stages from inventory groups
https://chatgpt.com/share/698b0039-c4c4-800f-b962-7033324c07a8
2026-02-10 10:53:53 +01:00
kevinveenbirkenbach 7104f4486c Added more meta information for infinito nexus deployer 2026-02-09 11:41:36 +01:00
kevinveenbirkenbach 4e5e8d2a7d Fix compose down behavior and harden templar rendering
- Restore full teardown semantics in Compose.down by delegating to down_stack
  (including volume removal and CI cleanup)
- Normalize templar render output to string to avoid None-related failures
- Clean up unused variable in templating fallback path
- Reorder test imports without changing behavior

https://chatgpt.com/share/69890935-4f1c-800f-8f2c-1b18a1df0ea5
2026-02-08 23:07:44 +01:00
kevinveenbirkenbach 24025bc37c Fix Ruff F821: make Compose a forward reference in deps.py
https://chatgpt.com/share/69890394-46c4-800f-abe0-b7046357872f
2026-02-08 22:43:39 +01:00
kevinveenbirkenbach 88429c716b Merge branch 'alert-autofix-182' 2026-02-08 22:15:56 +01:00
kevinveenbirkenbach 65d84292b3 Merge branch 'alert-autofix-192' 2026-02-08 20:36:51 +01:00
kevinveenbirkenbach 35ee61975d Merge branch 'alert-autofix-189' 2026-02-08 20:32:14 +01:00
kevinveenbirkenbach 55ce8c7684 Merge branch 'alert-autofix-183' 2026-02-08 20:25:31 +01:00
kevinveenbirkenbach 5c6e39bb57 Merge branch 'alert-autofix-181' 2026-02-08 20:22:04 +01:00
kevinveenbirkenbach 46b4314dd0 Merge branch 'alert-autofix-180' 2026-02-08 20:18:03 +01:00
kevinveenbirkenbach 630c4cc542 Merge branch 'alert-autofix-169' 2026-02-08 20:09:46 +01:00
kevinveenbirkenbach 25677be0c1 Fix flake8 F821 by importing Compose under TYPE_CHECKING
Add a TYPE_CHECKING-only import for Compose to satisfy static analysis
while avoiding runtime import cycles. Replace quoted annotations with
proper type references.

https://chatgpt.com/share/6988de6f-26f8-800f-8011-5d530a24d6f8
2026-02-08 20:05:14 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI ed62d87ea9 Potential fix for code scanning alert no. 169: Empty except
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:47:08 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI 3bea773037 Potential fix for code scanning alert no. 179: Cyclic import
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:46:58 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI d27ca68ebc Potential fix for code scanning alert no. 180: Cyclic import
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:46:33 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI 9cb617eae0 Potential fix for code scanning alert no. 181: Cyclic import
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:45:55 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI ac449e6944 Potential fix for code scanning alert no. 182: Cyclic import
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:45:45 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI bd4d4b7248 Potential fix for code scanning alert no. 183: Cyclic import
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:44:34 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI 4e0a955555 Potential fix for code scanning alert no. 189: Empty except
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:43:30 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI 8b793739f6 Potential fix for code scanning alert no. 192: Statement has no effect
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:42:32 +01:00
kevinveenbirkenbach 05f0072a96 fix(cli): make invokable command patchable and forward args unchanged
- Import get_invokable_paths and get_non_invokable_paths at module level
  so unittest.mock.patch can replace them
- Forward roles_file and suffix unchanged to preserve CLI boundary
- Remove implicit default resolution from CLI
- Keep error handling and output behavior unchanged

https://chatgpt.com/share/6987a639-0f8c-800f-9ee0-70cff683aa56
2026-02-07 21:52:29 +01:00
kevinveenbirkenbach 7e6caf7613 Solved wrong parent root bug 2026-02-07 19:53:12 +01:00
kevinveenbirkenbach b78ab29218 Renamed config entry from docker to compose
https://chatgpt.com/share/69870f54-d708-800f-9870-e9ae5a4bff44
2026-02-07 11:09:36 +01:00
kevinveenbirkenbach e1e1f3eb11 chore(vars): rename PATH_* to DIR_/BIN_/FILE_ conventions
https://chatgpt.com/share/6985cf49-3c74-800f-af97-f68b1969ab01
2026-02-06 12:23:46 +01:00
kevinveenbirkenbach 8a81630391 Added newline at file and POSIX compatible 2026-02-04 19:49:56 +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 c0cd4b8eda feat(ci,mirror): add branch-scoped mirror of missing images and gate deploys on it
- 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
2026-02-03 01:31:30 +01:00
kevinveenbirkenbach 9a84fafec5 feat(inventory): add mirror_policy to control mirror image overrides
- Default policy (if_missing): manual image/version win, mirror fills blanks only
- Add mirror_policy=force to always overwrite image/version
- Add mirror_policy=skip to ignore mirror completely
- Treat empty/whitespace values as missing
- Preserve non-image/version service keys
- Extend unit tests to cover all mirror policy scenarios

https://chatgpt.com/share/6981036a-7e40-800f-b43e-13c66cc55fac
2026-02-02 21:04:53 +01:00
kevinveenbirkenbach 734f013179 ci: wire GHCR mirror envs into deploy workflows and inventory init
- 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
2026-02-02 20:46:41 +01:00
kevinveenbirkenbach 7faf87cc68 fix(mirror): remove invalid skopeo flag and add recompress fallback for GHCR
- drop unsupported --dest-no-reuse-blobs flag
- add retry with forced recompression to avoid GHCR blob reuse errors
- print skopeo stdout/stderr on failure for easier debugging

https://chatgpt.com/share/6980f7ca-2aa0-800f-ae64-60081aa88f1c
2026-02-02 20:14:49 +01:00
kevinveenbirkenbach a70a033864 feat(inventory): add --mirror support to override docker images from mirrors file
- add --mirror flag to inventory creator
- resolve mirrors.yml automatically or via explicit path
- apply mirror overrides to applications.*.docker.services.* (image/version only)
- keep existing host_vars keys untouched
- add unit tests for mirror override behavior

https://chatgpt.com/share/6980cdb1-1e5c-800f-b25f-a1af757e4239
2026-02-02 17:15:30 +01:00
kevinveenbirkenbach 647e93ff18 mirror: disable blob reuse for skopeo copy to GHCR
https://chatgpt.com/share/6980c6ff-3a6c-800f-8c95-6acdbfebfbfd
2026-02-02 16:47:04 +01:00
kevinveenbirkenbach 4949b45f44 feat(mirror): add rate-limited image sync with concurrency protection
- add optional --images-per-hour throttle to mirror sync
- enforce safe default (50 images/hour) in CI
- prevent overlapping mirror runs via workflow concurrency
- make workflow robust for schedule, dispatch, and workflow_call
- fix GHCR namespace fallback to repository owner

https://chatgpt.com/share/6980be4f-d5d4-800f-a9ad-2aaba637897e
2026-02-02 16:09:57 +01:00
kevinveenbirkenbach e7fdaa1d10 fix(mirror): iterate all images and fail at end on mirror errors
- 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
2026-02-02 15:45:27 +01:00
kevinveenbirkenbach 5c499def02 Fixed collabora service for bbb
https://chatgpt.com/share/698062c6-0000-800f-928d-03fd39e7d38c
2026-02-02 09:38:33 +01:00