Zum Inhalt springen
GitTree
Git-Anleitungen9 Min. gelesen

So führen Sie GitHub Actions und GitLab CI lokal aus, bevor Sie pushen

Hören Sie auf, „Fix-CI“-Commits zu pushen, um zu sehen, ob ein Workflow erfolgreich ist. Führen Sie dieselben Jobs auf Ihrem eigenen Computer in Docker mit act oder gitlab-ci-local in wenigen Minuten aus und pushen Sie dann einmal. Enthält ein betriebsbereites Beispiel und eine visuelle Komplettlösung.

Geschrieben von Kodmora

Das Softwarehaus hinter GitTree

Veröffentlicht Aktualisiert
  • CI/CD
  • GitHub
Auf dieser Seite

Sie können GitHub Actions auf Ihrem eigenen Computer mit `act` und GitLab CI mit gitlab-ci-local ausführen: Beide lesen Ihre Pipeline-Datei und starten jeden Job in einem Docker-Container. Installieren Sie Docker, installieren Sie den Runner und führen Sie dann act -j test oder gitlab-ci-local test aus dem Repository-Ordner aus. Ein fehlgeschlagener Job schlägt jetzt innerhalb von Sekunden auf Ihrem Computer fehl, anstatt nach einem Push und Warten auf einen gehosteten Runner.

Dieser Leitfaden behandelt, was auf macOS, Windows und Linux installiert werden muss, die Befehle für beide Runner, einen Beispielworkflow, den Sie kopieren können, die Grenzen lokaler Läufe und die Fehler, die zuerst auftreten. Die exemplarische Vorgehensweise verwendet GitTree, den Git-Client, den wir erstellen: Seine Seite Lokale Pipelines prüft, was Sie installiert haben, schreibt eine Beispieldatei und bereitet den genauen Befehl für Sie vor. Lokale Pipelines sind Teil des kostenlosen Plans von GitTree und erfordern kein Hosting-Konto.

Warum CI-Pipelines lokal ausführen?

Jede Änderung an einer Workflowdatei ist Code, den Sie erst testen können, wenn er ausgeführt wird. Ohne einen lokalen Läufer lautet die Schleife: YAML bearbeiten, committen, pushen, auf einen Läufer warten, das Protokoll lesen, wiederholen. Jede Runde kostet Minuten und hinterlässt eine Spur von Commits wie „Versuchen Sie es erneut“. Ein lokaler Lauf verkürzt die Schleife auf Sekunden und hält den Verlauf sauber.

Push-and-Wait im Vergleich zu einem lokalen Lauf
Pushen und wartenLokal ausführen
Feedback-ZeitMinuten pro Versuch, plus WartezeitSekunden, nachdem das Bild abgerufen wurde
Commits erforderlichEine pro VersuchKeine, bis es vorbei ist
Verwendet gehostete CI-ProtokolleJaNein
Gleiche Umgebung wie Produktions-CIJaNah dran, nicht identisch (Container, keine gehosteten Geheimnisse)
Funktioniert offlineNeinJa, nach dem ersten Bildabruf

Was Sie brauchen: Docker plus einen Läufer

Beide Läufer starten jeden Job in einem Container, daher muss eine Docker-Engine installiert sein und ausgeführt werden: Docker Desktop, OrbStack oder Colima auf macOS, Docker Desktop auf Windows, Docker Engine oder Docker Desktop auf Linux. Installieren Sie dann den Runner für Ihre Datei.

So installieren Sie jeden Läufer
LäuferPipeline-DateimacOSWindowsLinux
act.github/workflows/*.ymlbrew install actwinget install nektos.actDas Installationsskript auf nektosact.com
gitlab-ci-local.gitlab-ci.ymlnpm install -g gitlab-ci-localDie EXE-Datei aus ihren GitHub-Versionen auf PATHnpm install -g gitlab-ci-local

gitlab-ci-local benötigt Node.js 18 oder höher, wenn Sie es mit npm installieren. Überprüfen Sie das Setup mit docker info, act --version und gitlab-ci-local --version: Wenn docker info fehlschlägt, starten Sie die Engine vor allem anderen.

Führen Sie GitHub Actions lokal mit act aus

Führen Sie act aus dem Stammordner des Repositorys aus. Listen Sie zuerst die Jobs auf und führen Sie dann den Job aus, an dem Sie arbeiten. Standardmäßig simuliert act ein push-Ereignis, sodass Jobs, die nur bei anderen Ereignissen ausgeführt werden, den Ereignisnamen benötigen.

# list workflows and jobs
act -l

# run one job from one workflow file
act -W .github/workflows/ci.yml -j test

# simulate a pull request instead of a push
act pull_request -j test

# pass a secret the job needs
act -j deploy -s NPM_TOKEN="$NPM_TOKEN"

# Apple silicon: run x86_64 images
act -j test --container-architecture linux/amd64

Beim ersten Durchlauf wird gefragt, welches Läuferbild verwendet werden soll. Mittel eignet sich für die meisten Projekte; In den kleinen Bildern fehlen die Tools, die gehostete Läufer enthalten, und das Gesamtbild ist sehr groß. Wenn ein Schritt mit „Befehl nicht gefunden“ fehlschlägt, wählen Sie mit -P ubuntu-latest=<image> ein größeres Bild aus oder installieren Sie das Tool in einem Schritt.

Führen Sie GitLab CI lokal mit gitlab-ci-local aus

gitlab-ci-local liest .gitlab-ci.yml aus dem aktuellen Ordner. Ohne Argumente wird die gesamte Pipeline ausgeführt. Geben Sie ihm einen Jobnamen, um einen Job auszuführen. --list zeigt die Jobs an, ohne sie auszuführen. Dies ist eine schnelle Möglichkeit, zu überprüfen, ob die YAML-Analyse erfolgt.

# list jobs and stages
gitlab-ci-local --list

# run one job
gitlab-ci-local test

# pass a CI/CD variable
gitlab-ci-local test --variable API_URL=http://localhost:8080

Führen Sie Schritt für Schritt eine Pipeline lokal von GitTree aus

  1. Öffnen Sie CI/CD

    Öffnen Sie Ihr Repository und drücken Sie CI/CD in der Symbolleiste. Ohne verbundenes Konto oder Pro wird die Ansicht auf Lokale Pipelines geöffnet; mit einem steht Lokal ausführen… im Header. Sie können auch Extras → Lokale Pipeline vorbereiten verwenden.

  2. Prüfen Sie, was Sie brauchen

    Was Sie brauchen zeigt Docker, act und gitlab-ci-local als Gefunden mit ihren Pfaden oder Nicht gefunden mit dem Installationsbefehl für Ihr System sowie Repository-Vertrauensstellung und Ihrer Terminal-Shell an. Installieren Sie das Fehlende und drücken Sie Check again.

  3. Fügen Sie ein Beispiel hinzu oder verwenden Sie Ihre Datei

    Pipelinedateien in diesem Repository listet Ihre Workflows mit Bereit zur Ausführung oder dem Grund auf, warum sie nicht ausgeführt werden können. Mit „Keine“ schreibt Add GitHub Actions example oder Add GitLab CI example eine kommentierte Starterdatei und öffnet sie; GitTree überschreibt niemals eine vorhandene Datei.

  4. Vorbereiten und ausführen

    Drücken Sie Lokal ausführen…, wählen Sie die Datei, einen Job und Ihre Shell aus und dann Befehl vorbereiten. Neues Terminal eingeben gibt den genauen Befehl in ein neues Terminal ein, ohne die Eingabetaste zu drücken: Lesen Sie ihn und drücken Sie dann selbst die Eingabetaste.

Lokale Pipelines in GitTree: Docker und Akt gefunden, Schritte für das Fehlende installieren und der Beispielworkflow zur Ausführung bereit.
Lokale Pipelines in GitTree: Docker und Akt gefunden, Schritte für das Fehlende installieren und der Beispielworkflow zur Ausführung bereit.

Ein Beispielworkflow als Ausgangspunkt

Dies ist die Form des GitHub Actions-Beispiels von GitTree: zwei Jobs, erstellen und dann testen, die mit act und auf GitHub gleich funktionieren. Ersetzen Sie die Befehle durch Ihre eigenen.

name: GitTree local check

on:
  push:
  pull_request:
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: npm ci && npm run build

  test:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v4
      - name: Test
        run: npm test

Wie sich eine lokale Ausführung von einer gehosteten CI unterscheidet

  • Geheimnisse und Variablen, die auf GitHub oder GitLab konfiguriert sind, sind nicht verfügbar; Übergeben Sie diejenigen, die ein Job benötigt.
  • Container, keine virtuellen Maschinen: Dienste, die systemd oder eine vollständige virtuelle Maschine benötigen, werden nicht auf die gleiche Weise ausgeführt.
  • Bilder unterscheiden sich von den gehosteten Läufern; Ein fehlendes Tool ist ein fehlendes Paket, kein fehlerhafter Arbeitsablauf.
  • Ereignisse werden simuliert: act ist standardmäßig push; Wiederverwendbare Workflows, Includes und Vorlagen werden vom Läufer aufgelöst, nicht von Ihrem Editor.
  • Ein vorbeifahrender lokaler Lauf ist kein gehostetes Ergebnis: Er verkürzt die Schleife; Ihr Gastgeber hat immer noch das letzte Wort.

Häufige Fehler und Korrekturen

Die ersten Fehler, die Menschen machen
FehlerUrsacheBeheben
Es kann keine Verbindung zum Docker-Daemon hergestellt werdenDer Motor läuft nichtStarten Sie Docker Desktop, OrbStack, Colima oder den Dienst Docker
Befehl wurde in einem Schritt nicht gefundenDem Läuferbild fehlt das WerkzeugVerwenden Sie ein größeres Image mit -P oder installieren Sie es in einem Schritt
Ein Job wird nie mit act ausgeführt.act simuliert push; Der Job hört auf ein anderes EreignisÜbergeben Sie das Ereignis, zum Beispiel act pull_request
Exec-Formatfehler auf Apple-SiliziumEin x86_64-Bild auf einem arm64 Mac--container-architecture linux/amd64 hinzufügen
Ein Geheimnis ist leerGehostete Geheimnisse sind nicht lokalÜbergeben Sie es mit -s oder --secret-file (act), --variable (gitlab-ci-local)

Bevor Sie pushen: Konflikte vorhersagen, auf Geheimnisse prüfen, Vorschau des Pushs anzeigen

Ein lokaler Pipeline-Lauf beantwortet eine Frage: Werden die Jobs erfolgreich sein? Drei weitere Prüfungen erfassen, was CI verspätet oder gar nicht meldet, und jede von ihnen wird auch auf Ihrem Computer ausgeführt, bevor etwas gesendet wird.

  1. Prognostizieren Sie die Zusammenführung. git merge-tree --write-tree --name-only HEAD origin/main führt die Zusammenführung im Speicher durch und listet die Dateien auf, bei denen es zu Konflikten kommen würde, ohne Ihren Arbeitsbaum zu berühren. GitTree führt die gleiche Art von Prüfung durch und warnt vor einer Zusammenführung, die zu Konflikten führen würde; siehe wie man Git-Merge-Konflikte löst.
  2. Auf Geheimnisse prüfen. Vor einem Commit oder Push scannt GitTree die Änderung lokal auf mögliche Token, Passwörter und private Schlüssel und stoppt mit einem Dialog, wenn es einen findet. Ein Geheimnis, das das Remote erreicht, muss gedreht werden, daher ist der günstigste Zeitpunkt, es zu fangen, vor dem Push. Eine Warnung ist keine Garantie, also überprüfen Sie dennoch, was Sie senden.
  3. Vorschau des Pushs. Ship Preview listet die Commits und Dateien auf, die der Push senden würde, und für jede Workflow-Datei, die gelesen werden kann, ob eine Pipeline bei diesem Push ausgeführt wird, ausgeführt werden kann oder nicht ausgeführt wird, mit Angabe des Grundes.

Führen Sie dann den Job lokal aus und pushen Sie ihn einmal. Der Anleitung zu geheimen Warnungen und der Anleitung zur Schiffsvorschau behandeln beide Dialoge im Detail.

Was ist mit Bitbucket Pipelines und Azure Pipelines?

Es gibt keinen verwalteten lokalen Runner für bitbucket-pipelines.yml oder azure-pipelines.yml, der mit act oder gitlab-ci-local übereinstimmt. Ein praktischer Ansatz besteht darin, Ihre Build- und Testbefehle in Skripten zu belassen, sie von Ihrer gehosteten Pipeline aufzurufen und eine kleine GitHub Actions- oder GitLab CI-Datei nur für lokale Ausführungen hinzuzufügen. GitTree markiert diese Dateien als Kein lokaler Läufer und bietet die Beispiele genau dafür an.

Nächste Schritte: Der Leitfaden „Pipelines lokal ausführen“ dokumentiert jede Schaltfläche, CI/CD-Ausführungen deckt gehostete Ausführungen, erneute Ausführungen und Genehmigungen ab und der Tools-Launcher listet die anderen integrierten Tools von GitTree auf.

Häufig gestellte Fragen

Kann ich GitHub Actions lokal ausführen?

Ja. act liest Ihre Workflowdateien und führt jeden Job in einem Docker-Container auf Ihrem Computer aus. Installieren Sie Docker und act und führen Sie dann act -j <job> aus dem Repository-Ordner aus.

Benötigt act Docker?

Ja. act startet jeden Job in einem Docker-Container, daher muss eine Docker-Engine wie Docker Desktop, OrbStack, Colima oder Docker Engine installiert sein und ausgeführt werden.

Wie teste ich GitLab CI lokal?

Installieren Sie gitlab-ci-local, starten Sie Docker und führen Sie dann gitlab-ci-local --list aus, um die Jobs zu überprüfen, und gitlab-ci-local <job>, um einen auszuführen. Geben Sie jedem Job ein image:, damit er in einem Container ausgeführt wird.

Wie übergebe ich Geheimnisse an act?

Verwenden Sie -s NAME=value für ein Geheimnis oder --secret-file für eine Datei davon. Halten Sie diese Datei mit .gitignore aus dem Repository fern.

Ist ein lokaler Lauf dasselbe wie der Läufer von GitHub?

Nah dran, nicht identisch. Lokale Ausführungen verwenden Container sowie Ihre eigenen Bilder und Geheimnisse, daher verhalten sich einige Schritte anders. Nutzen Sie sie, um die Feedbackschleife zu verkürzen und Ihrem Gastgeber die letzte Entscheidung zu überlassen.

Benötige ich GitTree Pro, um Pipelines lokal auszuführen?

Nein. Lokale Pipelines sind Teil des kostenlosen Plans von GitTree und benötigen kein Hosting-Konto. Gehostete CI/CD-Läufe, Wiederholungen und Genehmigungen sind Teil von Pro.

Quellen

Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 11. November 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.