ci: do not create a pipeline for docs-only commits

Same trap as in ThreadNet-Web: a commit touching only docs/ produced a pipeline with zero jobs, which GitLab marks as failed - pipeline 187 on 2026-08-06. build_embedded is skipped by its changes rule and publish_npm depends on it, so nothing is left.

The path list is now a YAML anchor shared with build_embedded instead of a second copy. CI_PIPELINE_SOURCE == web stays allowed so publish_npm remains reachable after a docs-only commit.

Refs axion1337.chat/threadnet-call#1
This commit is contained in:
Thore Cimbal
2026-08-07 12:00:00 +00:00
parent 846135e48d
commit e793902ae0
+37 -11
View File
@@ -3,6 +3,38 @@
# Trigger-Schema wie ThreadNet-Web: Pushes pruefen nur bei relevanten Pfaden,
# Veroeffentlichen ist ein bewusster manueller Akt.
# --- Wann ueberhaupt eine Pipeline entsteht ------------------------------------
# Gleiche Falle wie in ThreadNet-Web: Ein Commit, der nur docs/ anfasst, erzeugt
# eine Pipeline mit NULL Jobs - und die zaehlt als "failed". Real passiert am
# 2026-08-06 (Pipeline 187). Ursache ist die needs-Kette: build_embedded laeuft
# wegen changes: nicht, publish_npm haengt per needs daran, und damit bleibt gar
# nichts uebrig.
#
# ⚠️ Rot, das nichts bedeutet, gewoehnt einem das Hinsehen ab - und in diesem
# Verbund IST die rote Pipeline die Alarmanlage (siehe gitops/CLAUDE.md zur
# TURN-Rotation).
#
# CI_PIPELINE_SOURCE == "web" bleibt erlaubt, damit publish_npm auch nach einem
# reinen Doku-Commit ueber "Run pipeline" erreichbar ist.
.pfade_mit_pipeline: &pfade_mit_pipeline
- src/**/*
- embedded/**/*
- public/**/*
- package.json
- pnpm-lock.yaml
- vite*.config.*
- .env.production
- .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
- publish
@@ -13,17 +45,11 @@ build_embedded:
rules:
- if: $CI_COMMIT_TAG =~ /^v/
- if: $CI_COMMIT_BRANCH
changes:
- src/**/*
- embedded/**/*
- public/**/*
- package.json
- pnpm-lock.yaml
- vite*.config.*
# .env.production setzt VITE_PRODUCT_NAME und landet damit im Bundle - ohne
# diesen Eintrag aendert man den Produktnamen und die CI baut gar nicht erst.
- .env.production
- .gitlab-ci.yml
# derselbe Anker wie im workflow-Block oben - zwei Listen wuerden driften.
# .env.production steht dort mit drin: sie setzt VITE_PRODUCT_NAME und landet
# damit im Bundle - ohne den Eintrag aendert man den Produktnamen und die CI
# baut gar nicht erst.
changes: *pfade_mit_pipeline
before_script:
- corepack enable
script: