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.
This commit is contained in:
+37
-8
@@ -7,6 +7,41 @@
|
|||||||
# - webpack braucht ~4 GB Heap -> NODE_OPTIONS
|
# - webpack braucht ~4 GB Heap -> NODE_OPTIONS
|
||||||
# - Desktop-Build laeuft im dockerbuild-Image (rust:bullseye + node, glibc-2.31-Ziel)
|
# - 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:
|
stages:
|
||||||
- build
|
- build
|
||||||
- package
|
- package
|
||||||
@@ -82,14 +117,8 @@ web:
|
|||||||
when: never
|
when: never
|
||||||
# Pushes nur, wenn build-relevante Pfade betroffen sind - Doku-Commits kosten nichts
|
# Pushes nur, wenn build-relevante Pfade betroffen sind - Doku-Commits kosten nichts
|
||||||
- if: $CI_COMMIT_BRANCH
|
- if: $CI_COMMIT_BRANCH
|
||||||
changes:
|
# derselbe Anker wie im workflow-Block oben - zwei Listen wuerden driften
|
||||||
- apps/**/*
|
changes: *pfade_mit_pipeline
|
||||||
- packages/**/*
|
|
||||||
- patches/**/*
|
|
||||||
- scripts/**/*
|
|
||||||
- pnpm-lock.yaml
|
|
||||||
- pnpm-workspace.yaml
|
|
||||||
- .gitlab-ci.yml
|
|
||||||
variables:
|
variables:
|
||||||
NODE_OPTIONS: "--max-old-space-size=6144"
|
NODE_OPTIONS: "--max-old-space-size=6144"
|
||||||
CI_PACKAGE: "true"
|
CI_PACKAGE: "true"
|
||||||
|
|||||||
Reference in New Issue
Block a user