# CI routing infrastructure. Changes to the top-level router (build.yml) or # this filter configuration rerun every area's jobs. Every job-gating filter # therefore includes *ci, so routing changes exercise the jobs they affect # instead of matching only the project filter. ci: &ci - .github/workflows/build.yml - .github/workflows/gradle-cache-prime.yml - .github/config/.files.yaml build: &build - *ci - buildSrc/** - build.gradle - gradle/spotless.gradle - app/(common|core|proprietary|saas)/build.gradle - Taskfile.yml - .taskfiles/backend.yml - .github/workflows/check-licence.yml # Backend build inputs. This is intentionally broader than `build`: Java and # backend resource changes must exercise the backend matrix even when Gradle # build scripts themselves are unchanged. backend: &backend - *ci - *build - gradle/** - gradle.properties - gradlew - gradlew.bat - settings.gradle - app/(common|core|proprietary|saas)/src/(main|test)/java/** - "app/(common|core|proprietary|saas)/src/(main|test)/resources/**/!(messages_*.properties|*.md)*" - scripts/db-migration/** - .github/workflows/backend-build.yml openapi: &openapi - *ci - *build - app/(common|core|proprietary|saas)/src/main/java/** - .github/workflows/check-openapi.yml docker-base: &docker-base - docker/base/Dockerfile # Dockerfiles only (base, embedded, and unoserver). The slow multi-architecture # (arm64) leg of the PR Docker test build runs only when a Dockerfile changes, # rather than for every code PR. dockerfiles: &dockerfiles - docker/**/Dockerfile* docker: &docker - docker/embedded/Dockerfile - docker/embedded/Dockerfile.fat - docker/embedded/Dockerfile.ultra-lite - ".github/workflows/build.yml" - ".github/workflows/push-docker.yml" - scripts/init.sh - scripts/init-without-ocr.sh - exampleYmlFiles/** - *docker-base project: &project - *ci - app/(common|core|proprietary|saas)/src/(main|test)/java/** - *build - "app/(common|core|proprietary|saas)/src/(main|test)/resources/**/!(messages_*.properties|*.md)*" - exampleYmlFiles/** - *docker - *docker-base - gradle.properties - gradlew - gradlew.bat - launch4jConfig.xml - settings.gradle - frontend/** - docker/** - scripts/RestartHelper.java - Taskfile.yml - .taskfiles/backend.yml - .taskfiles/docker.yml - scripts/db-migration/** - .github/workflows/db-migration-test.yml - .github/workflows/docker-compose-tests.yml - .github/workflows/test-build-docker.yml frontend: &frontend - *ci - frontend/** - testing/** - docker/** - scripts/translations/*.py - .taskfiles/desktop.yml - scripts/convert_cff_to_ttf.py - scripts/harvest_type3_fonts.py - scripts/ignore_translation.toml - scripts/index_type3_catalogue.py - scripts/summarize_type3_signatures.py - scripts/type3_to_cff.py - scripts/update_type3_library.py - Taskfile.yml - .taskfiles/frontend.yml - .taskfiles/e2e.yml - .github/workflows/frontend-validation.yml - .github/workflows/frontend-a11y.yml - .github/workflows/e2e-stubbed.yml - .github/workflows/e2e-live.yml # Files that affect the Tauri desktop bundle. Changes to any of these files # trigger the multi-OS Tauri build job. tauri: &tauri - *ci - frontend/editor/src-tauri/** - frontend/editor/src/desktop/** - frontend/editor/tsconfig.desktop.vite.json - frontend/package.json - frontend/package-lock.json - frontend/editor/vite.config.ts - .github/workflows/tauri-build.yml - Taskfile.yml - .taskfiles/desktop.yml # Files that affect the AI engine, including its Python tool models, fixers, # and tests. The engine validation job also runs when the Java tool surfaces # used to generate those models change. engine: &engine - *ci - engine/** - app/(common|core|proprietary|saas)/src/main/java/** - .github/workflows/ai-engine.yml - Taskfile.yml - .taskfiles/engine.yml # Files that can make the committed generated API models (frontend tool API # types and engine tool models) stale: their Java sources, generators, # generated outputs (to catch hand edits), and generation tasks. Broad # frontend, Docker, and testing globs are intentionally excluded, so a CSS-only # PR does not start the backend to rebuild the specification. generated-models: &generated-models - *ci - *openapi - frontend/editor/scripts/generate-tool-api-types.mts - frontend/editor/src/core/types/toolApiTypes.ts - frontend/editor/src/core/types/toolIO.ts - engine/scripts/generate_tool_models.py - engine/src/stirling/models/tool_models.py - engine/src/stirling/models/tool_io.py - .taskfiles/frontend.yml - .taskfiles/engine.yml - .github/workflows/check-generated-models.yml licenses-frontend: &licenses-frontend - ".github/workflows/frontend-backend-licenses-update.yml" - "frontend/package.json" - "frontend/package-lock.json" - "frontend/editor/scripts/generate-licenses.js" licenses-backend: &licenses-backend - ".github/workflows/frontend-backend-licenses-update.yml" - *build # Files that can affect premium or enterprise behaviour. Changes to any of # these files trigger the enterprise Playwright job for pull requests. proprietary: &proprietary - *ci - app/proprietary/** - frontend/editor/src/proprietary/** - frontend/editor/src/core/tests/enterprise/** - testing/compose/docker-compose-keycloak-oauth.yml - testing/compose/docker-compose-keycloak-saml.yml - testing/compose/keycloak-realm-oauth.json - testing/compose/keycloak-realm-saml.json - testing/compose/start-oauth-test.sh - testing/compose/start-saml-test.sh - testing/compose/validate-oauth-test.sh - testing/compose/validate-saml-test.sh - configs/settings.yml.template - build.gradle - app/proprietary/build.gradle - gradle/spotless.gradle - .github/workflows/build-enterprise.yml