
GitLab CI: .gitlab-ci.yml online formatieren und validieren
Stages, Includes, `rules:`: Struktur einer .gitlab-ci.yml prüfen, bevor die Pipeline läuft — kein GitLab-Runner, kein offizielles CI Lint.
Warum ein .gitlab-ci.yml prüfen, bevor die Pipeline startet?
Ein .gitlab-ci.yml, das nicht parst, ein stages, das kein Array ist, oder ein Job ohne script und ohne trigger, fällt oft zu spät auf: roter Badge, Pipeline Editor, blockierter Merge. FastMinify liefert kein offizielles GitLab CI Lint und startet keinen Runner. Der GitLab-CI-Validator prüft strukturell im Browser — Root-Mapping, stages, Jobs mit script oder trigger, include, Hidden Jobs . — und der GitLab-CI-Formatter rückt YAML ein (2 oder 4 Leerzeichen). Der Cluster liegt im CI/CD-Hub. JS/CSS in derselben Pipeline minifizieren: CI/CD-Minifizierungsleitfaden.
GitLab vs GitHub Actions: zwei YAML-Formen, drei Schichten
GitHub Actions lebt unter .github/workflows/*.yml (viele Dateien, Trigger on, Jobs mit steps). GitLab CI liegt fast immer in einer einzigen .gitlab-ci.yml im Repo-Root: stages, benannte Jobs, include. Die FastMinify-Tools folgen dieser Grenze — kleben Sie keinen Actions-Workflow in den GitLab-Validator.
jobs-Map plus Pflicht-on — siehe den GitHub-Actions-LeitfadenFastMinify stellt zwei Tools bereit. Keines davon ist GitLab CI Lint. Wer die drei vermischt, bekommt hier „gültig“ und scheitert trotzdem im Pipeline Editor.
js-yaml-Roundtrip, Einzug 2 oder 4 Leerzeichen (Standard 2) — siehe format-gitlab-ciinclude-Expansion, Auswertung von rules: — Pipeline-Editor-UI, API oder glab ci lintrules:-Klausel den Job wähltDer Validator spricht nicht mit einem GitLab-Runner, ruft die CI-Lint-API nicht auf und expandiert keine Remote-Includes. Erwähnungen von rules: sind ein echtes GitLab-Thema — kein Browser-Feature.
script, kein Docker-Image, kein Runner-Cacheinclude: remote / include: project — nur das eingefügte YAML wird gelesenrules:, only/except oder workflow:rulespages-Jobs sind normale Jobs: sie brauchen script oder triggerAnatomie einer .gitlab-ci.yml: was FastMinify prüft
Die Wurzel muss ein YAML-Mapping sein, kein Skalar und keine Liste. Ein Dokument: wiederholtes --- wird abgelehnt. Wenn stages vorhanden ist, muss es ein Array nichtleerer Namen sein. Jeder Key, der nicht reserviert ist und nicht mit . beginnt, ist ein Job: er braucht script (nichtleerer String oder Liste) oder trigger.
stages, variables, include, workflow, default, image, services, cache, before_script, after_script, spec.hidden: keine script-Pflichtextends: Warnung — ein Parent muss script oder trigger lieferninclude: Warnung, nicht immer ein BlockerDer Formatter pretty-printet über js-yaml. Das ist kein semantischer Rewriter: Key-Reihenfolge kann sich ändern, #-Kommentare verschwinden, der Einzug wird 2 oder 4 Leerzeichen.
Vorher
Nachher
Ein Top-Level-include reicht, um die Warnung „keine Jobs“ zu vermeiden. FastMinify lädt inkludierte Dateien nicht. Über 512 KiB UTF-8 wird die Eingabe abgelehnt — wie bei den anderen DevOps-Tools.
include-Zähler: ein Skalar zählt 1; ein Array zählt seine Längerules: im eingefügten YAML werden nicht interpretiertglab ci lint nutzenValidieren, dann formatieren: ein konkreter Ablauf
Öffnen Sie den GitLab-CI-Validator, fügen Sie eine einzelne .gitlab-ci.yml ein (max. 512 KiB) und warten Sie auf Debounce (~300 ms). Das Panel zeigt Verdict, Issues (Parse-Fehler mit Zeilenhinweis) und Zähler für Jobs / Stages / Includes.
Der GitLab-CI-Formatter pretty-printet über js-yaml. Einfügen, Upload oder Sample: Auto-Format; nach manueller Edit den Format-Button. Dieser Schritt beweist nicht, dass die Struktur vollständig ist.
Ein Kollege hat compile: nur mit stage: build ergänzt. GitLab lehnt die Pipeline ab, oft mit einer Meldung, die im MR-Overlay schwer lesbar ist.
Schritt 1: Datei in validate-gitlab-ci einfügen
Öffnen Sie validate-gitlab-ci. Ein ungültiges Verdict wie „Job … needs script or trigger“ zeigt auf den leeren Job.
Schritt 2: script oder trigger ergänzen
Fügen Sie script: [npm run build] oder einen echten trigger: hinzu. Erneut einfügen, bis das Panel eine gültige Struktur zeigt (extends-Warnungen dürfen bleiben).
Schritt 3: formatieren und MR öffnen
Das korrigierte YAML durch format-gitlab-ci schicken, kopieren, committen. Reviewer lesen eingerückte Jobs, kein Blob.
Ein Beispiel aus der GitLab-Doku oder einem Snippet kommt mit gemischten Spaces. Sie sehen nicht mehr, wo ein Job endet.
Schritt 1: zuerst formatieren, wenn die Datei unlesbar ist
In format-gitlab-ci einfügen. Dieser Schritt beweist nicht, dass die Config strukturell vollständig ist.
Schritt 2: das eingerückte Dokument validieren
Die Ausgabe in den Validator kopieren. stages, jeden Job prüfen, und dass .-Templates keinen kaputten sichtbaren Job verdecken.
Schritt 3: CI Lint für Includes und rules behalten
Sobald die Form stimmt, bleiben Schema / Remote-Includes / rules: bei GitLab — FastMinify ersetzt dieses Gate nicht.
GitLab CI Lint (und Minify) in der Kette behalten
Der Browser ist die schnelle Schleife: YAML plus Struktur. GitLab lehnt eine Pipeline bereits ab, wenn das offizielle Schema ungültig ist — deshalb steckt selten ein „Lint-CI“-Job in derselben Datei. Lokal ruft glab ci lint (offizielle CLI, am Projekt authentifiziert) CI Lint auf: gemergte Includes, optional --dry-run. glab-Version pinnen; FastMinify ersetzt diesen Aufruf nicht. JS/CSS in der Pipeline minifizieren: CI/CD-Minifizierungsleitfaden.
Einfaches Beispiel
Liegt das Repo auf GitHub, sind die Pendants format-github-actions und validate-github-actions — dieselbe Idee (YAML plus Struktur, nicht actionlint). Dockerfile und Compose bleiben im DevOps-Hub. Ein minifiziertes JS-Bundle aus einem Job liest man mit unminify-js oder dem Unminify-Leitfaden — das ist kein CI-YAML.
Fazit
Fügen Sie die .gitlab-ci.yml ein, korrigieren Sie die Struktur (Mapping, stages, Jobs mit script/trigger), rücken Sie ein, dann pushen. FastMinify läuft lokal und lädt das YAML nicht hoch. Das ist kein GitLab CI Lint: Remote-Includes, rules: und das offizielle Schema bleiben in der UI, der API oder glab ci lint. Für generisches YAML bei beautify-yaml bleiben; für GitHub Actions im selben CI/CD-Hub.
Verwandte Artikel

Kaputtes YAML, fehlendes `on` oder `jobs`, leere Steps: Workflow-Struktur vor dem Push prüfen — actionlint bleibt in der CI.

SDL-Syntaxfehler, Schema-Review und Formatierung vor dem Merge — ergänzt den bestehenden GraphQL-Beautifier.

Senken Sie Ihre OpenAI-/Anthropic-/Gemini-Rechnung: Input/Output schätzen, Batch und Caching in der Kalkulation aktivieren — geprüfte Tarife, 100 % lokal.