Commit Graph
664 Commits
Author SHA1 Message Date
kevinveenbirkenbach aa6b7de00d fix(shopware): pin secure build configuration 2026-03-25 15:44:55 +01:00
kevinveenbirkenbachandClaude Sonnet 4.6 ad7c3e29d1 style: apply ruff formatting to test_docker_image_versions.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 15:44:55 +01:00
kevinveenbirkenbachandClaude Sonnet 4.6 b075b480fc feat: add ghcr.io support and depth-aware version comparison
- Support docker.io/ prefix by stripping it and querying Docker Hub
- Add ghcr.io support via anonymous Bearer token flow (no secrets needed)
- Depth-aware version comparison: version: "15" compares only x tags,
  version: "8.3" only x.x tags, version: "2.12.0" only x.x.x tags

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 15:44:55 +01:00
kevinveenbirkenbachandClaude Sonnet 4.6 dc9ef23df8 feat: add Docker image version check integration test and CI workflow
- Add tests/integration/test_docker_image_versions.py that checks all
  roles/web-*/config/main.yml for outdated semver-compatible Docker image
  versions against Docker Hub
- Non-Docker-Hub images (ghcr.io etc.) are listed as unchecked with their
  current version
- Suppress individual checks with # nocheck: docker-version above version:
- GitHub Actions ::warning:: annotations are emitted in CI
- Add .github/workflows/test-docker-image-versions.yml as standalone workflow
- Integrate workflow into ci-orchestrator.yml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 15:44:54 +01:00
kevinveenbirkenbach 903fc897f4 Merge branch 'main' into feature/playwright-e2e-test 2026-03-24 21:44:11 +01:00
kevinveenbirkenbach 281b9cc081 docs: cleanup mailu administration guide and fix todo formatting 2026-03-23 23:59:21 +01:00
kevinveenbirkenbach 35130ec524 Merge branch 'main' into feature/playwright-e2e-test 2026-03-23 20:25:21 +01:00
kevinveenbirkenbach e0a163cf15 docs: cleanup mailu administration guide and fix todo formatting 2026-03-23 18:59:59 +01:00
kevinveenbirkenbach 289a05ac13 Merge branch 'main' into feature/lint 2026-03-23 10:23:08 +01:00
kevinveenbirkenbach 65abbb0695 Merge branch 'main' into feature/playwright-e2e-test 2026-03-22 23:09:03 +01:00
kevinveenbirkenbach f45e0b001e fix(codeql): resolve remaining python alerts 2026-03-21 11:06:59 +01:00
kevinveenbirkenbach 81a445cfe2 Annotate missing Playwright specs in CI 2026-03-21 11:00:43 +01:00
kevinveenbirkenbach 189267496d Rename module_utils package to utils 2026-03-21 02:05:39 +01:00
kevinveenbirkenbach 003a3a0b84 Merge branch 'main' into feature/lint
Resolve merge conflicts, keep the cleanup script move to scripts/image, and fix the resulting lint regressions.
2026-03-21 01:36:58 +01:00
kevinveenbirkenbach 38ecde6525 Merged main into playwright 2026-03-20 13:08:20 +01:00
kevinveenbirkenbach 9c62879c27 Handle explicit failure paths in retry integration tests 2026-03-20 02:15:03 +01:00
kevinveenbirkenbach ad3f159548 Require Docker Compose in dev packaging 2026-03-19 11:25:49 +01:00
kevinveenbirkenbach ff4b03c344 Fix strong_password filter module_utils path 2026-03-19 10:49:16 +01:00
kevinveenbirkenbach d720937763 Fix EL9 RPM Python packaging dependency 2026-03-19 04:33:35 +01:00
kevinveenbirkenbach ab96c12a6c lint formated 2026-03-19 03:13:47 +01:00
kevinveenbirkenbach 3b11d7f469 feat(packaging): add distro packages and install via package metadata 2026-03-19 02:53:15 +01:00
kevinveenbirkenbach de555f6bc3 add get_url_retry plugin and migrate get_url usages 2026-03-19 01:58:11 +01:00
kevinveenbirkenbach c6f5fdea15 refactor plugins layout and migrate uri calls to uri_retry 2026-03-19 01:41:07 +01:00
kevinveenbirkenbach 9f169321ed Merge branch 'main' into feature/playwright-e2e-test 2026-03-18 02:18:44 +01:00
kevinveenbirkenbach 1f9a0d9778 feat(test-e2e-playwright): finalize role-based playwright runner and tests 2026-03-17 03:57:35 +01:00
kevinveenbirkenbach 8ed583dde9 fix(ansible): remove deprecated disable_lookups and set loop_var 2026-03-16 11:51:56 +01:00
kevinveenbirkenbach cf02e4ec2c test(integration): ignore ansible runtime vars in variable usage check 2026-02-23 19:38:02 +01:00
kevinveenbirkenbach 468761e5c2 fix(ansible-modules): keep /usr/bin/python shebang and adjust shebang integration test 2026-02-23 09:46:10 +01:00
kevinveenbirkenbach 54dd2fd11d test(integration): enforce portable python shebangs 2026-02-23 09:03:53 +01:00
kevinveenbirkenbach ec30948546 fix(deploy): use bash -lc for commands with pipefail 2026-02-21 16:05:42 +01:00
kevinveenbirkenbach 584d2629c9 test(integration): forbid sh -lc commands using pipefail 2026-02-21 16:00:05 +01:00
kevinveenbirkenbach 932e97b1c9 Whitelisted ansible variables 2026-02-20 17:15:45 +01:00
kevinveenbirkenbach 1fb252fc7d refactor(inventories,roles): migrate util-* to bundle inventories and unify AUR handling
Migrates large parts of the legacy util-* role structure to inventory-driven
bundles and standardizes AUR installation via central system roles.

- Adds `web-svc-legal`, `web-svc-asset`, and `web-app-dashboard` to all server bundles.
- Removes `util-srv-corporate-identity` entirely.
- Introduces new workstation bundle inventories:
  `admin`, `admin-network`, `browser`, `design`, `dev-*`, `game-*`, `office`.
- Uses bundle variables `SYS_PACKAGES` and `SYS_AUR_PACKAGES` as the primary
  installation mechanism.
- Removes/replaces obsolete util-desk/util-dev roles where fully covered.
- Renames dev roles:
  `util-desk-dev-core` -> `dev-core`,
  `util-desk-dev-python` -> `dev-python`,
  `util-desk-dev-arduino` -> `dev-arduino`.
- Adds missing `application_id` vars for renamed roles.
- Removes the entire `util` section from `roles/categories.yml`.
- Replaces direct `kewlfft.aur.aur` calls in desktop/driver roles with
  a centralized wrapper role.
- Introduces new role `sys-aur-install` as AUR installation wrapper.
- Migrates `dev-yay` to `sys-aur` and adds `SYS_AUR_PACKAGES: []` default.
- Extends constructor stage:
  auto-load `sys-package` when `SYS_PACKAGES` is set,
  and `sys-aur` + `sys-aur-install` when `SYS_AUR_PACKAGES` is set.
- Cleans up stage loading:
  removes util-srv from `02_server.yml`,
  reduces workstation loading to `desk-roles.yml` + `drv-non-free`.
- Updates integration/unit tests for the new invokable and include behavior.
- Integration test now accepts static `include_tasks` references.
- Fixes recursion risk between `sys-aur` and `sys-aur-install` by setting
  `run_once_sys_aur` at the beginning of `sys-aur/tasks/01_core.yml`.

BREAKING CHANGE:
- `util-*` categories and bundle paths are no longer part of stage loading.
- Multiple `util-desk-*`, `util-dev-*`, and `util-srv-*` roles were removed.
- Deployment groups must be migrated to the new bundle/role naming.
2026-02-19 14:10:59 +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 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 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 7427711782 Merge remote-tracking branch 'origin/alert-autofix-211' into merge-autofix 2026-02-09 08:42:20 +01:00
kevinveenbirkenbach 76064827de test(integration): remove mixed unittest imports to satisfy code scanning
Refactor integration test to avoid mixed `import` / `from import` usage
by importing TestCase, main, and patch explicitly.
This resolves Code Scanning alert #224 without suppressions.

https://chatgpt.com/share/69898baf-35b4-800f-9fb1-ca42cae438d3
2026-02-09 08:24:22 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI f1ba3ce329 Potential fix for code scanning alert no. 224: Module is imported with 'import' and 'import from'
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-09 08:01:50 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI 1f0e351f6e Potential fix for code scanning alert no. 211: Implicit string concatenation in a list
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-09 08:00:15 +01:00
kevinveenbirkenbach 5644ee9835 test(inventory): fix missing mock import and clean up integration test
- Import unittest.mock to fix F821 undefined name error
- Simplify test documentation and inline comments
- Remove redundant assertions while keeping semantic coverage
- Improve readability of inventory manager integration test

https://chatgpt.com/share/6988d352-a064-800f-8a2d-f836e2279305
2026-02-08 19:17:49 +01:00
kevinveenbirkenbachandCopilot Autofix powered by AI aa0d4c9c2c Potential fix for code scanning alert no. 138: Module is imported with 'import' and 'import from'
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-08 18:36:54 +01:00
kevinveenbirkenbach 4adb4118d1 **test(integration): forbid raw docker CLI usage**
Enforce `container`/`compose` wrappers by scanning repo files for direct `docker …`, `docker compose …`, and `docker-compose …` command invocations (with allowlists + context matching) to keep engine switching (e.g., Docker ↔ Podman) cheap and centralized.

https://chatgpt.com/share/69871f14-9030-800f-996e-3e32d70c774d
2026-02-07 12:16:11 +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 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 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 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 8a81630391 Added newline at file and POSIX compatible 2026-02-04 19:49:56 +01:00
kevinveenbirkenbach 3e8abe3cb4 fix(rdbms): preserve database_consumer_id across role boundaries
- Introduce database_consumer_id_passed to avoid fact/vars collisions
- Explicitly pass consumer context into svc-db-postgres via include_role
- Strengthen context assertion in postgres init tasks
- Move once-flag include to the beginning of postgres core tasks
- Make POSTGRES_EXEC_SHELL non-interactive by injecting PGPASSWORD
- Improve test coverage to detect facts overridden by include-time vars

https://chatgpt.com/share/69833e56-93a0-800f-8e3d-d970cf87daef
2026-02-04 13:40:44 +01:00
kevinveenbirkenbach 8907b6c910 tests(integration): prevent overriding set_fact variables via include vars
Add an integration test that statically scans all Ansible task files under
roles/*/tasks/** and tasks/** and fails if a variable set via set_fact is
also passed via vars: on include/import tasks or roles.

This guards against scope leaks and accidental host-fact overrides caused
by mixing context variables with set_fact.

https://chatgpt.com/share/6983220c-29f4-800f-bb9b-5145b1c1cf75
2026-02-04 11:40:06 +01:00