From 26b6fd89385757dea34beefa8933574c427f613e Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Fri, 7 Aug 2026 12:00:00 +0000 Subject: [PATCH] ci: do not create a pipeline for docs-only commits A commit touching only docs/ produced a pipeline with zero jobs, which GitLab marks as failed - pipelines 203 and 204 on 2026-08-06 were both red for nothing. Cause is the needs chain: web is skipped by its changes rule, and desktop_linux/desktop_windows depend on it, which collapses the whole pipeline including the manual jobs. This matters beyond cosmetics: gitops/CLAUDE.md makes the red pipeline the alarm for the TURN rotation, stating there is no separate reminder. Red that means nothing trains people to stop looking. The path list is a YAML anchor shared with the web job - two copies would drift. CI_PIPELINE_SOURCE == web stays allowed so the manual maintenance jobs remain reachable via Run pipeline. --- .gitlab-ci.yml | 45 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) 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"