Files
management/.gitlab-ci.yml
T
Thore Cimbal 2539fd01e8 ci(gruppenpruefung): trust the lab CA for the git.lab API call
The job got past the git fix but then failed the urllib call to https://git.lab
with CERTIFICATE_VERIFY_FAILED: gruppenpruefung.py uses urllib's default trust,
which in python:3.12-alpine does not include the private aXionLabs CA. Point
SSL_CERT_FILE at the repo's ci/lab-ca-chain.crt (the same chain curl --cacert
uses); Python honours it in the default SSL context. Verified locally: the
context loads the 2 lab CA certs.
2026-08-11 12:00:00 +00:00

79 lines
2.9 KiB
YAML

# CI des management-Repos. Enthaelt bewusst nur die Stillstandspruefung — hier
# liegt Dokumentation, es gibt nichts zu bauen.
#
# Die Pruefung sucht Dinge, die leise aufgehoert haben zu funktionieren. Anlass ist
# die Retro vom 2026-08-09: sechs solcher Faelle in neun Tagen, keiner davon durch
# eine Ueberwachung gefunden.
stages:
- pruefen
# Nur geplant und von Hand. Bei jedem Doku-Commit zu laufen brächte nichts —
# die Pruefung sieht auf den Zustand des Verbunds, nicht auf diesen Commit.
stillstandspruefung:
stage: pruefen
image: python:3.12-alpine
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_PIPELINE_SOURCE == "web"
variables:
LAB_CA: "$CI_PROJECT_DIR/ci/lab-ca-chain.crt"
before_script:
- apk add --no-cache curl ca-certificates >/dev/null
script:
# Ohne Token laeuft nichts — und das soll laut auffallen. Eine Pruefung, die
# sich still selbst ueberspringt, waere genau der Fehler, den sie sucht.
- |
if [ -z "$GITLAB_TOKEN" ]; then
echo "GITLAB_TOKEN fehlt (Gruppen-Token mit read_api)."
echo "Ohne Lesezugriff kann nichts geprueft werden - siehe management#31."
exit 1
fi
- python3 scripts/stillstandspruefung.py
# Befunde sind kein Betriebsausfall, aber sie sollen sichtbar bleiben. Die rote
# Pipeline ist bei uns die Alarmanlage (gitops/CLAUDE.md, TURN-Rotation).
allow_failure: false
# Offline-Gate bei jedem Push: Artefakte gegen schema.yaml, STATUS.md
# aktuell, Framework-Dateien unveraendert (Design 2026-08-11, Slice 1).
# Braucht nur den Baum - bewusst ohne Token und ohne Netz.
validate:
stage: pruefen
image: python:3.12-alpine
rules:
- if: $CI_PIPELINE_SOURCE == "push"
before_script:
- apk add --no-cache git >/dev/null # pruefe_prosa.py braucht git cat-file
- pip install --quiet pyyaml
script:
- python3 scripts/validate.py
- python3 scripts/gen_status.py --check
- python3 scripts/pruefe_upstream_drift.py
- python3 scripts/pruefe_prosa.py
allow_failure: false
# Verbund-Prüfung (ADR-0012/0013): Gruppenliste vs. docs/components/,
# Pointer-Praesenz, Meilenstein-/Prioritaetspflicht, Issue-Drift,
# Git-Hygiene. Gleiche Regeln wie die Stillstandspruefung: geplant/von
# Hand, rot = Alarm, Abbruch ohne Token.
gruppenpruefung:
stage: pruefen
image: python:3.12-alpine
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_PIPELINE_SOURCE == "web"
variables:
# gruppenpruefung.py spricht die git.lab-API per urllib an; git.lab läuft
# über die private aXionLabs-CA. Python honoriert SSL_CERT_FILE im Default-Context.
SSL_CERT_FILE: "$CI_PROJECT_DIR/ci/lab-ca-chain.crt"
before_script:
- apk add --no-cache git >/dev/null # gruppenpruefung.py ruft 'git log' auf
script:
- |
if [ -z "$GITLAB_TOKEN" ]; then
echo "GITLAB_TOKEN fehlt (Gruppen-Token mit read_api)."
exit 1
fi
- python3 scripts/gruppenpruefung.py
allow_failure: false