Commit Graph
2780 Commits
Author SHA1 Message Date
kevinveenbirkenbach c3fb04e91a refactor: share application dependency resolution 2026-04-01 15:13:04 +02:00
kevinveenbirkenbach 9ccdde2b5b refactor(services): extract shared frontend service loader role 2026-04-01 04:05:44 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 a2d844e798 refactor: move frontend service loading out of sys-front-inj-all into global stage
Extracts the shared frontend service loader from sys-front-inj-all into
tasks/utils/load_services.yml and tasks/utils/_load_frontend_service.yml,
called once from tasks/stages/02_server.yml before web-svc and web-app
roles. This decouples service loading from per-app injection and makes
load order explicit via SERVICE_REGISTRY entry order. Updates docs,
comments, and adds an integration test enforcing the new SPOT.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 03:30:19 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 f03a2f4613 fix: move run_once flag to first task in all service 01_core.yml files
Ensures the run_once guard is set before any other task executes,
preventing infinite recursion when load_app.yml re-evaluates service
roles mid-run. Also introduces new 01_core.yml + main.yml for
web-svc-asset and web-svc-libretranslate following the standard schema,
and adds a lint test enforcing this structure across all SERVICE_REGISTRY
roles.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 02:42:51 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 be341234bb feat: register web-app-mailu as 'email' service and enforce dependency
- Add 'email' key (role: web-app-mailu, type: frontend) to SERVICE_REGISTRY
- Declare compose.services.email with enabled: true and shared: true in all
  33 app roles that reference web-app-mailu or use SYSTEM_EMAIL_* variables
- Add integration test test_mailu_service_dependency.py that enforces this
  constraint for any future role additions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 01:13:56 +02:00
kevinveenbirkenbach 00193b4a23 Rename the canonical services map to SERVICE_REGISTRY 2026-03-31 21:43:29 +02:00
kevinveenbirkenbach 9cbb12d540 Propagate host MTU to the local compose network 2026-03-31 21:00:51 +02:00
kevinveenbirkenbach ef6b645cd7 Add uri_probe action plugin for short reachability checks 2026-03-31 20:35:57 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 ec2b513bde feat(config): enforce shared consistency for all enabled services
- Add shared: true to logout, oauth2, and greenlight services wherever
  enabled: true was set without a shared declaration
- Add # noqa: shared comment before role-local internal containers
  (redis, worker, web, opensearch, search) that are intentionally
  not shared
- Add missing enabled: false to ollama in svc-ai-ollama (shared was
  declared without enabled, violating the new consistency rule)
- Add integration test test_service_shared_consistency to enforce:
  Rule 1: enabled=true requires shared=true or a # noqa: shared comment
  Rule 2: shared key requires enabled key to be present

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 20:13:34 +02:00
kevinveenbirkenbach 017818976a test(services): cover pixelfed dashboard dependency 2026-03-30 19:49:42 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 1241fa4011 style(tests): apply linter formatting to test_services_canonical.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 16:14:33 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 c74bd98969 feat(services): introduce canonical field for shared-role service entries
Adds canonical: cdn to css/javascript entries in 20_services.yml so that
role-based reverse lookup (web-svc-cdn → cdn) is deterministic. Updates
_build_role_to_key to use the canonical field. Adds an integration test
verifying bidirectional resolution and a lint test enforcing canonical
consistency rules (exactly one primary, no chaining, matching roles).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 15:58:54 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 84323aa471 refactor(cdn): replace cdn_paths/cdn_urls filter plugins with cdn lookup plugin
Eliminates scope-dependent CDN variable bugs by introducing a `cdn` lookup
plugin that resolves paths and URLs at call-time using an explicit application_id
argument. Deletes the old cdn_paths.py and cdn_urls.py filter plugins and their
tests; adds a new unit test for the lookup plugin's _cdn_paths and _to_url_tree
helpers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 15:10:59 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 96649d8c9b refactor(services): centralize frontend service loading with generic lookup plugin
Introduces a SPOT for all frontend service loading in sys-front-inj-all/tasks/01_services.yml,
driven by a new generic `service` lookup plugin that resolves services by key or role name
and returns {id, role, enabled, shared, needed}. Needed = enabled AND shared (direct or
transitive). The canonical key→role mapping moves to group_vars/all/20_services.yml
(previously scattered hardcoded rules). Removes per-role service loads from bigbluebutton,
nextcloud, and dashboard. Renames 01_dependencies.yml→01_services.yml and
08_services.yml→08_daemons.yml. Adds flush_handlers after each service load.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 08:27:21 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 18779de223 feat(services-disabler): set enabled/shared false for all roles defining service
Scans roles_dir to find every role whose config/main.yml defines the
disabled service, then creates or updates the compose.services entry in
host_vars for each matching role — including roles not yet present in
applications. roles_dir is now a required parameter (no Optional fallback).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 02:02:36 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 a50c90c733 fix(deploy): resolve SERVICES_DISABLED service names to app IDs and verify inventory
- deploy.py: use find_provider_roles() to map service names (e.g. 'matomo')
  to provider app IDs (e.g. 'web-app-matomo') before filtering deploy_ids;
  forward SERVICES_DISABLED into the container via extra_env
- container.sh: rename INSPECT_CMD to CMD for consistency; fix indentation
- Makefile: expose CMD variable on exec target for non-interactive use
- environment.sh: source scripts/meta/env/all.sh for INVENTORY_DIR; add
  inventory verification after SERVICES_DISABLED deploy using make exec
- variables.md: document CMD variable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 01:26:44 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 135ceefa98 fix(build): add SPOT for local image name and fix missing REPO_PREFIX
Add scripts/meta/resolve/image/local.sh as SPOT for the local Docker
image tag (<repo-basename>/<distro>). Wire it into Makefile build
targets (IMAGE_TAG), compose.py (_base_env sets INFINITO_IMAGE), and
compose.yml (no default fallback). Fix build.sh to accept a pre-set
IMAGE_TAG without requiring REPO_PREFIX. Add make build + build-no-cache
to environment.sh test flow with correct section ordering.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 00:16:27 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 dca1eb69c7 docs: remove README.md files under docs/ and add lint check
Replace per-directory README.md index files with automatic glob toctree
in root index.rst (docs/**). Add lint test that fails if any README.md
appears under docs/. Document the no-README rule in documentation.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 21:16:15 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 9d863f1ef4 feat(inventory): add SERVICES_DISABLED env var support and environment test flow
- Add services_disabler.py: parse SERVICES_DISABLED, disable services in host_vars,
  remove provider roles from inventory
- Wire apply_services_disabled_from_env into cli/create/inventory/cli.py after deploy
- Add unit tests for all services_disabler functions
- Update hardware.md and variables.md with SERVICES_DISABLED documentation
- Update environment.sh: deploy dashboard with SERVICES_DISABLED=matomo first,
  assert dashboard reachable + matomo not reachable, then deploy matomo and assert
  reachable; extract assert_http_status / assert_http_status_not helpers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 15:00:24 +02:00
kevinveenbirkenbach c491df98e2 fix compose ca shell handling 2026-03-28 17:13:19 +01:00
kevinveenbirkenbach 2b0ed2eacf Merge branch 'feature/pixelfed-playwright' into feature/taiga-ldap 2026-03-28 09:22:30 +01:00
kevinveenbirkenbach b8a2b4337b Move web app playwright spec test to lint 2026-03-28 09:18:47 +01:00
kevinveenbirkenbach 327179b0c2 Format cancel pull request test path 2026-03-28 09:17:58 +01:00
kevinveenbirkenbach a67df006aa Fix stale cancel pull request test path 2026-03-28 09:10:45 +01:00
kevinveenbirkenbach 67fadb57b8 refactor: normalize inventory filename to devices 2026-03-28 05:40:13 +01:00
kevinveenbirkenbach 698f589a65 move todo transparency test to lint 2026-03-28 02:30:06 +01:00
kevinveenbirkenbach 507f1386a7 refactor: reorganize agent docs 2026-03-28 01:29:16 +01:00
kevinveenbirkenbach 4e05f4ddeb Move static checks to lint 2026-03-27 23:28:44 +01:00
kevinveenbirkenbach 50bde25f58 docs: move environment guides 2026-03-27 23:10:33 +01:00
kevinveenbirkenbach c2438c2b6a ci: reorganize PR resolver scripts 2026-03-27 15:17:17 +01:00
kevinveenbirkenbach 11149f3434 ci: gate PR workflow by file scope 2026-03-27 14:54:54 +01:00
kevinveenbirkenbach 4a9ae3b706 Deleted tests/integration/TODO.md 2026-03-27 14:09:31 +01:00
kevinveenbirkenbach 7b61f515f1 Refine TODO transparency warnings 2026-03-27 13:49:05 +01:00
kevinveenbirkenbach cd7f6f050a Add Dockerfile template warning test 2026-03-27 00:30:07 +01:00
kevinveenbirkenbach b4b863676c Fix cancellation of closed fork PR runs 2026-03-26 08:31:12 +01:00
kevinveenbirkenbach a2219a3af7 Add OIDC and OAuth2 mutual exclusion test 2026-03-26 02:39:12 +01:00
kevinveenbirkenbach 0b5b8a8c72 Add OIDC and OAuth2 mutual exclusion test 2026-03-26 02:10:46 +01:00
kevinveenbirkenbach 2f0edbb2fc Fix oauth2 proxy cookie secret generation 2026-03-26 01:15:08 +01:00
kevinveenbirkenbach 66bbffe963 Fix docker image reference scan hints 2026-03-25 19:24:53 +01:00
kevinveenbirkenbach 80d879c271 Ignore JS and JSON files in raw docker command test 2026-03-25 17:56:38 +01:00
kevinveenbirkenbach cc910167e9 Guard empty deploy matrices and ignore JSON docker scan 2026-03-25 15:44:56 +01:00
kevinveenbirkenbach 38cf91aaef Removed unneccessary warning emoji 2026-03-25 15:44:55 +01:00
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