From 3ccff12cfd507d4fe8db4718a86f63449a46af2d Mon Sep 17 00:00:00 2001 From: mhoennig Date: Thu, 3 Sep 2026 11:54:18 +0200 Subject: [PATCH] =?UTF-8?q?ci(werkator):=20.werkator.yml=20=E2=80=94=20Wer?= =?UTF-8?q?kbaum=20wird=20zus=C3=A4tzlich=20von=20Werkator=20gebaut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Werkator ist ein deklaratives CI (https://werkator.javagil.de): Die Datei im Repo-Root beschreibt die Builds, der Watcher der Instanz baut jeden Push auf jedem Branch. Zwei Builds, wie die beiden Teile des Monorepos: `backend` (Gradle-Tests, Artefakt sind die Berichte unter backend/build/reports) und `frontend` (npm ci, Vitest, Vite-Bundle als frontend/dist). Das `default` trägt bewusst keinen Trigger — es ist nur die Einstellungsbasis, damit nichts doppelt läuft. Beide Befehle laufen wörtlich so, wie sie in der Datei stehen, lokal durch: Backend BUILD SUCCESSFUL in 1m35s mit 180 Testfällen (jacoco- und Test-Berichte liegen im deklarierten Artefakt-Verzeichnis), Frontend npm ci + 628 Tests + Vite-Bundle nach frontend/dist/index.html (761 kB). Die Sandbox hat Node 20.19, lokal läuft 22.17 — deshalb zusätzlich die `engines`-Angaben aller installierten Pakete geprüft: Keines schließt 20.19 aus; die schärfsten Schranken sind vite 8.1.5 (^20.19.0 || >=22.12.0) und jsdom 29.1.1 (^20.19.0 || ^22.13.0 || >=24). 20.19.0 ist damit exakt die Untergrenze — wer eine Abhängigkeit aufnimmt, die darüber liegt, bricht den CI-Build (Anleitung). Werkator baut und testet nur; deployt wird weiterhin über scripts/deploy-*.sh bzw. tools/remote (D77), und der GitHub-Pages-Workflow bleibt unberührt — beide CI laufen parallel, bis das Repo nach Gitea umzieht. Die Footer-Version setzt nur der Pages-Workflow (D16), das Werkator-Artefakt trägt sie nicht. Co-Authored-By: Claude Opus 5 --- .werkator.yml | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .werkator.yml diff --git a/.werkator.yml b/.werkator.yml new file mode 100644 index 0000000..50d8f63 --- /dev/null +++ b/.werkator.yml @@ -0,0 +1,52 @@ +# Werkator CI configuration for Werkbaum (built by https://werkator.javagil.de). +# Reference: https://github.com/mhoennig/werkator/blob/main/docs/configuration.md +werkator: + version: + since: "1.0.1" + +# Commit status target. Points at GitHub for now; the repository will move to +# https://git.javagil.de (Gitea) later, GitHub stays a synchronised clone. Status +# checks are posted only once the origin is a Gitea; until then this is a label. +gitea: + baseUrl: https://github.com + owner: mhoennig + repo: werkbaum + statusContext: werkator + +artifacts: + retentionPerBranch: 3 + +watcher: + newBranchMaxAge: 5d + +# Named build definitions. "default" carries no trigger on purpose: it is only +# the settings base the two real builds inherit from, so nothing runs twice. +builds: + default: + stdoutLog: build.stdout.log + stderrLog: build.stderr.log + + # Backend: Kotlin/Spring Boot under backend/, JUnit 5 + Cucumber, H2 in memory. + # The openApiGenerate task runs as part of compilation; jacoco reports land in + # backend/build/reports and are browsed by the artifact page's report index. + backend: + trigger: + onPush: true + cleanCommand: rm -rf backend/build + buildCommand: cd backend && ./gradlew --console=plain --no-daemon test + artifactDirs: + - backend/build/reports + statusContext: werkator/backend + + # Frontend: Vite bundles the editor into one self-contained frontend/dist/index.html. + # `npm ci` installs from the lock file; the tests run first, a red Vitest run + # never produces an artifact. The default build carries the "latest build" hint, + # exactly like the GitHub Pages deployment. + frontend: + trigger: + onPush: true + cleanCommand: rm -rf frontend/dist frontend/node_modules + buildCommand: cd frontend && npm ci --no-audit --no-fund && npm test && npm run build + artifactDirs: + - frontend/dist + statusContext: werkator/frontend