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
- 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.
| Pushen und warten | Lokal ausführen | |
|---|---|---|
| Feedback-Zeit | Minuten pro Versuch, plus Wartezeit | Sekunden, nachdem das Bild abgerufen wurde |
| Commits erforderlich | Eine pro Versuch | Keine, bis es vorbei ist |
| Verwendet gehostete CI-Protokolle | Ja | Nein |
| Gleiche Umgebung wie Produktions-CI | Ja | Nah dran, nicht identisch (Container, keine gehosteten Geheimnisse) |
| Funktioniert offline | Nein | Ja, 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.
| Läufer | Pipeline-Datei | macOS | Windows | Linux |
|---|---|---|---|---|
act | .github/workflows/*.yml | brew install act | winget install nektos.act | Das Installationsskript auf nektosact.com |
| gitlab-ci-local | .gitlab-ci.yml | npm install -g gitlab-ci-local | Die EXE-Datei aus ihren GitHub-Versionen auf PATH | npm 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/amd64Beim 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:8080Führen Sie Schritt für Schritt eine Pipeline lokal von GitTree aus
Ö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.
Prüfen Sie, was Sie brauchen
Was Sie brauchen zeigt Docker,
actund 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.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.
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.

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 testWie 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:
actist standardmäßigpush; 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
| Fehler | Ursache | Beheben |
|---|---|---|
| Es kann keine Verbindung zum Docker-Daemon hergestellt werden | Der Motor läuft nicht | Starten Sie Docker Desktop, OrbStack, Colima oder den Dienst Docker |
| Befehl wurde in einem Schritt nicht gefunden | Dem Läuferbild fehlt das Werkzeug | Verwenden 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-Silizium | Ein x86_64-Bild auf einem arm64 Mac | --container-architecture linux/amd64 hinzufügen |
| Ein Geheimnis ist leer | Gehostete 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.
- Prognostizieren Sie die Zusammenführung.
git merge-tree --write-tree --name-only HEAD origin/mainfü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. - 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.
- 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?
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?
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.