Einheit 2 / 11

Entwerfen von CI/CD-Pipelines mit künstlicher Intelligenz: GitHub Actions und GitLab CI

Gewinne:

  • Fähigkeit, das CI/CD-Konzept, die Pipeline-Anatomie (Trigger, Job, Schritt, Läufer, Artefakt) und die Unterschiede zwischen GitHub Actions und GitLab CI zu verstehen und künstliche Intelligenz Pipelines mit dem richtigen Kontext erstellen zu lassen
  • Möglichkeit zur Überprüfung und Sicherung geheimer Referenzen, Berechtigungen und der Existenz aufgerufener Komponenten in der durch künstliche Intelligenz erzeugten Pipeline
  • Fähigkeit, die Prinzipien anzuwenden, Geheimnisse nicht im Klartext zu schreiben, minimale Autorisierung zu gewähren und die Bereitstellung durch Trennung von CI unter Kontrolle zu halten

Das Herzstück moderner Software ist die automatisierte Pipeline, über die Code den Computer eines Entwicklers verlässt, bis er sicher beim Kunden ankommt. Diese Pipe heißt CI/CD. CI (Continuous Integration) ist die automatische Kompilierung und Prüfung jeder Codeänderung; Sein Zweck besteht darin, einen Fehler zu erkennen, bevor der Entwickler überhaupt die Tastatur verlässt. CD (Continuous Delivery/Deployment) ist die automatische Vorbereitung oder sogar Freigabe von getestetem Code. Eine CI/CD-Pipeline ist eine Konfigurationsdatei, die diese Schritte der Reihe nach definiert – normalerweise geschrieben in YAML (einem für Menschen lesbaren Konfigurationstextformat).

Das manuelle Schreiben dieser YAML-Dateien ist mühsam, ausführlich und fehleranfällig. Wenn die Einrückung um ein Leerzeichen verschoben wird, bricht die gesamte Pipeline. Hier kommt die KI ins Spiel: Mit dem richtigen Kontext erstellt sie in Sekundenschnelle einen funktionierenden Entwurf. Aber es ist Ihre Aufgabe, zu verstehen und zu überprüfen, was jeder generierte Schritt bewirkt – denn dies ist die Pipe, die Ihren Code an die Produktion weiterleitet.

Anatomie der CI/CD-Pipeline

Jede Pipeline besteht aus mehreren Grundkonzepten. Sie können die KI-Ausgabe nicht steuern, ohne Folgendes zu wissen:

  • Auslöser: Was startet die Pipeline? Normalerweise ein Push an einen Branch, eine Pull-Anfrage (Merge-Anfrage) oder ein Zeitplan.
  • Job: Logische Einheit, die eine Reihe von Schritten ausführt; zum Beispiel „test“, „build“, „deploy“.
  • Schritt: Ein einzelner Befehl oder eine einzelne Aktion innerhalb eines Jobs.
  • Runner: Die virtuelle Maschine oder der Container, auf der Jobs ausgeführt werden.
  • Artefakt: Die von einem Job erzeugte und von nachfolgenden Jobs verwendete Ausgabe (z. B. eine kompilierte Datei).
  • Geheimnis: Vertrauliche Informationen, die Pipeline verwendet, aber nicht im Klartext im Repository verbleiben sollten.

GitHub Actions behält diese Definition in .github/workflows/*.yml-Dateien; Die Einheit ist Workflow → Job → Schritthierarchie. GitLab CI hingegen verwendet die Stage → Job-Struktur in der Datei .gitlab-ci.yml. Die KI kennt beide Syntaxen, Sie müssen jedoch explizit sagen, welche Sie möchten.

Tipp: Wenn Sie AI nach Pipelines fragen, geben Sie immer Folgendes an: Plattform (GitHub Actions oder GitLab CI), Sprache/Framework (Node, .NET, Python…), Trigger und ob es bereitgestellt wird. Diese vier Informationen verdoppeln den Nutzen der Ausgabe.

Schritt für Schritt: Entwerfen einer Pipeline mit KI

  1. Klären Sie das Ziel. Wie „Führen Sie Tests beim Push an den Hauptserver aus, erstellen Sie ein Image, aber stellen Sie es nur bereit, wenn ein Tag ausgelöst wird“.
  2. Lassen Sie das Skelett herstellen. Fragen Sie die KI nach dem grundlegenden Arbeitsablauf.
  3. Lesen und verstehen Sie die Schritte. Überprüfen Sie, was jede Lauf- und Verwendungszeile bewirkt.
  4. Überprüfen Sie Secret-Referenzen. Werden die Secrets mit ${{ Secrets.NAME }} aufgerufen oder sind sie im Code eingebettet?
  5. Probieren Sie es lokal/CI aus. Führen Sie es in einem kleinen Test-Repository aus und sehen Sie sich das Rot-Grün-Verhalten (Fail-Pass) an.
  6. Erweitern Sie schrittweise. Fügen Sie zuerst einfach CI (Test) hinzu, dann erstellen Sie es und fügen Sie zuletzt die Bereitstellung hinzu.

Sicherheit: Geheimnis und Erlaubnis in Vorbereitung

CI/CD ist einer der Orte, an denen am meisten Geheimnisse preisgegeben werden. Drei goldene Regeln:

  1. Schreiben Sie Geheimnisse niemals im Klartext in YAML. Verwenden Sie das Secret-Repository der Plattform (GitHub Secrets, GitLab CI/CD Variables) und rufen Sie es mit ${{ Secrets.X }} auf.
  2. Geringstes Privileg. Der Token, den Sie Pipeline geben, hat nur so viel Autorität wie nötig. Grenzen Sie dies mit dem „permissions: block“ in GitHub Actions ein.
  3. Drücken Sie im Protokoll nicht auf „geheim“. Zeilen wie echo $TOKEN enthüllen das Geheimnis im Protokoll. Plattformen maskieren, aber seien Sie auch vorsichtig.
Achtung: Der Einfachheit halber fügt AI manchmal eingebettete Werte wie Passwort: 123456 oder zu weit gefasste Berechtigungen: Alles schreiben in Beispielpipelines ein. Beheben Sie das Problem immer: Ändern Sie das Geheimnis in eine Referenz und reduzieren Sie die Berechtigung.

Vergleichstabelle

Konzept

GitHub-Aktionen

GitLab CI

Konfigurationsdatei

.github/workflows/*.yml

.gitlab-ci.yml

Baueinheit

Workflow → Job → Schritt

Bühne → Job

Auslöser

zehn:

Regeln: / nur:

Geheimnis beschwören

${{ Secrets.NAME }}

$NAME (CI/CD-Variablen)

Fertige Komponente

verwendet: action@v4

umfassen: /template

Läufer

Nachlauf:

Tags:

drei Mini-Koffer

Fall 1 – Reduziert auf 6 Stunden und 40 Minuten. Ein Team wollte seinen manuellen Test-Build-Deploy-Prozess automatisieren, aber niemand war mit YAML vertraut. Sie beschrieben YZ als „Node.js-Projekt, GitHub-Aktionen, NPM-Test und NPM-Build in Push to Main, Bereitstellung nur im V*-Tag“. Die KI hat ein funktionierendes Gerüst aus 40 Zeilen erstellt; Das Team überprüfte jeden Schritt und ging innerhalb von 40 Minuten live. Wenn sie es von Hand geschrieben hätten, wäre es eine Tagesarbeit gewesen.

Fall 2 – Bei der Authentifizierung wurde eine Sicherheitslücke entdeckt. Ein Ingenieur bat die KI, einen Workflow bereitzustellen. Die Ausgabe umfasste Berechtigungen: write-all – was bedeutet, dass der Token in das Repository, Pakete und alles schreiben konnte. Der Techniker bemerkte dies und grenzte es mit folgenden Berechtigungen ein: {contents: read, packets: write}. Dadurch wurde das Risiko beseitigt, dass eine gekapte Abhängigkeit das gesamte Repository ersetzt.

Fall 3 – Halluzinatorische Aktion. Ein Team führte die von der KI vorgeschlagenen Verwendungen aus: actions/deploy-to-aws@v3 line; Eine solche offizielle Aktion gab es nicht, die KI hat sich den Namen ausgedacht. Pipeline explodierte mit „Aktion nicht gefunden“. Lektion: Überprüfen Sie im Marketplace, ob jede mit „uses:“ aufgerufene Komponente tatsächlich vorhanden ist.

Vier kopierbare Vorlagen

1) Grundlegender CI-Workflow:

Schreiben Sie einen CI-Workflow für GitHub Actions. Projekt: [SPRACHE/FRAMEWORK].Trigger: Push- und Pull-Anfrage an den Hauptzweig. Schritte: Abhängigkeiten installieren, Tests ausführen, Lint ausführen. NEIN Deploy.Runner ubuntu-latest. Kein Geheimnis erforderlich. Kommentieren Sie YAML.

2) Bereitgestellter CD-Workflow (sicher):

Schreiben Sie den Bereitstellungsworkflow für [PLATTFORM]. Es sollte nur mit dem „v*“-Tag funktionieren. Ziel: [MEDIEN/CLOUD]. Regeln: - Schreiben Sie Geheimnisse NIEMALS im Klartext, sondern nennen Sie sie mit ${{ Geheimnissen.

3) Beschreiben Sie die vorhandene Pipeline:

Beschreiben Sie die folgende [PLATFORM]-Pipeline Zeile für Zeile: Was macht jeder Job, in welcher Reihenfolge wird er ausgeführt, welches Geheimnis verwendet er und was sind die beiden riskantesten Punkte? Schlagen Sie abschließend drei Verbesserungen vor.Pipeline: [YAML CONTENT]

4) Pipeline beschleunigen:

Die folgende CI-Pipeline läuft langsam (Dauer: [X Min.]). Untersuchen Sie die Cache-Nutzung, parallele Jobs und unnötige Schritte. Machen Sie fünf konkrete, umsetzbare Beschleunigungsvorschläge und notieren Sie jeweils die geschätzten Auswirkungen. Pipeline: [YAML]

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwach: „GitHub Actions-Workflow schreiben.“

Ergebnis: Es ist unklar, welche Sprache, welcher Auslöser, ob es einen Einsatz gibt; AI stellt eine generische Node-Instanz bereit, die wahrscheinlich nicht zu Ihrem Projekt passt und das Geheimnis fest codieren kann.

Stark: „GitHub Actions-Workflow schreiben. Python 3.12-Projekt, pytest + ruff in Pull-Request und Haupt-Push ausführen; KEINE Bereitstellung; Abhängigkeiten mit Pip-Cache beschleunigen; keine Geheimnisse erforderlich. YAML mit Kommentaren exportieren.“

Unterschied: Die zweite Eingabeaufforderung gibt die Sprache, den Auslöser, den Umfang (keine Bereitstellung), die Leistungserwartung und die Sicherheitsbeschränkung an. Die Ausgabe funktioniert direkt.

Häufige Fehler

  • Einbetten des Geheimnisses in YAML. Klartext-Passwort/Token ist die häufigste CI-Schwachstelle.
  • Zu weit gefasste Genehmigung. Erteilen Sie die erforderliche Mindestberechtigung statt „Alle schreiben“.
  • Verlassen Sie sich auf eine nicht vorhandene Aktion/Vorlage. Überprüfen Sie die von der KI erstellten „uses:“-Zeilen im Marketplace.
  • Verwirrende Bereitstellung mit CI. Der Test kann bei jedem Push ausgeführt werden, die Bereitstellung muss jedoch kontrolliert und genehmigt werden.
  • Cache wird nicht verwendet. Das Installieren von Abhängigkeiten bei jedem Lauf von Grund auf verlangsamt die Pipeline um Minuten.
  • Versuchen Sie den ersten Workflow direkt im Haupt-Repository. Führen Sie es zunächst in einem Test-Repository aus.

Zusammenfassend

CI/CD-Pipelines sind automatisierte Pipes, die Code sicher zum Produkt verschieben und mit YAML definiert werden. KI erstellt schnell funktionierende Blaupausen für GitHub Actions und GitLab CI – Sie müssen sich jedoch über die Plattform, die Sprache, den Auslöser und den Bereitstellungsbereich im Klaren sein. Es gibt drei Sicherheitsregeln: Geheimnisse als Referenz aufrufen, Mindestprivilegien gewähren, Geheimnisse nicht im Protokoll drucken. Es liegt in Ihrer Verantwortung, zu überprüfen, ob jede „uses:/include:“-Komponente tatsächlich vorhanden ist und was jeder Schritt bewirkt.

Anwendungsaufgabe

Wählen Sie ein einfaches Beispielprojekt (sogar ein „Hallo Welt“ in Ihrer Sprache reicht aus). Lassen Sie AI einen Workflow mit der Vorlage „Basic CI Workflow“ oben erstellen. Dann: (1) Schreiben Sie in Ihren eigenen Worten, was jeder Schritt bewirkt; (2) Stellen Sie sicher, dass keine Geheimnisse eingebettet sind und die Berechtigungen eingeschränkt sind. (3) Wenn möglich, lassen Sie es in einem Testtank laufen und beobachten Sie das Rot-Grün-Verhalten.

Checkliste

  • [ ] Ich habe meiner Eingabeaufforderung die Plattform, die Sprache/das Framework, den Auslöser und den Bereitstellungsbereich hinzugefügt.
  • [ ] Ich verstehe, was jeder Job und Schritt in der generierten YAML bewirkt.
  • [ ] Kein Geheimnis ist Klartext; alle ${{ Secrets.X }} / CI-Variable.
  • [ ] Ich habe die Berechtigungen auf die minimale Autorität eingegrenzt.
  • [ ] Ich habe überprüft, dass alle aufgerufenen Aktionen/Vorlagen tatsächlich vorhanden sind.
  • [ ] Ich habe den Bereitstellungsschritt mit Genehmigung/Schutz gesteuert.