diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 25729abf3..5a6f9493d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,6 +7,41 @@ # - webpack braucht ~4 GB Heap -> NODE_OPTIONS # - Desktop-Build laeuft im dockerbuild-Image (rust:bullseye + node, glibc-2.31-Ziel) +# --- Wann ueberhaupt eine Pipeline entsteht ------------------------------------ +# Ohne diesen Block erzeugt ein Commit, der nur docs/ anfasst, eine Pipeline mit +# NULL Jobs - und die zaehlt in GitLab als "failed". Real passiert am 2026-08-06 +# (Pipelines 203 und 204): zwei Doku-Commits, zweimal rot, nichts kaputt. +# +# Der Grund liegt an der needs-Kette: web laeuft wegen changes: nicht, und +# desktop_linux/desktop_windows haengen per needs daran - damit faellt die ganze +# Pipeline in sich zusammen, auch die manuellen Jobs ohne needs. +# +# ⚠️ Warum das keine Kosmetik ist: In gitops/CLAUDE.md ist die rote Pipeline die +# ALARMANLAGE fuer die TURN-Rotation ("es gibt keinen separaten Reminder"). Rot, +# das nichts bedeutet, gewoehnt einem das Hinsehen ab. +# +# Preis: Nach einem reinen Doku-Commit entsteht keine Pipeline von selbst. Damit +# die manuellen Wartungsjobs (desktop_image, windows_provision) trotzdem +# erreichbar bleiben, laesst die Regel CI_PIPELINE_SOURCE == "web" durch - eine +# ueber "Run pipeline" in der Oberflaeche gestartete Pipeline entsteht immer. +.pfade_mit_pipeline: &pfade_mit_pipeline + - apps/**/* + - packages/**/* + - patches/**/* + - scripts/**/* + - pnpm-lock.yaml + - pnpm-workspace.yaml + - .gitlab-ci.yml + +workflow: + rules: + - if: $CI_COMMIT_TAG =~ /^v/ + - if: $CI_PIPELINE_SOURCE == "schedule" + - if: $CI_PIPELINE_SOURCE == "web" + - if: $CI_COMMIT_BRANCH + changes: *pfade_mit_pipeline + - when: never + stages: - build - package @@ -82,14 +117,8 @@ web: when: never # Pushes nur, wenn build-relevante Pfade betroffen sind - Doku-Commits kosten nichts - if: $CI_COMMIT_BRANCH - changes: - - apps/**/* - - packages/**/* - - patches/**/* - - scripts/**/* - - pnpm-lock.yaml - - pnpm-workspace.yaml - - .gitlab-ci.yml + # derselbe Anker wie im workflow-Block oben - zwei Listen wuerden driften + changes: *pfade_mit_pipeline variables: NODE_OPTIONS: "--max-old-space-size=6144" CI_PACKAGE: "true"