CI/CD · Git-Workflow

CI/CD für Laravel: Git-Workflow & Bereitstellung ohne Ausfallzeiten

Von · Letzte Aktualisierung: · Kostenlose Lektüre, keine Paywall

Die Lücke zwischen „es funktioniert auf meinem Computer“ und „es stellt sich sicher bereit“ ist kleiner als je zuvor. Dieser Leitfaden bietet Ihnen einen Git-Workflow, der sich auf ein Team von einem Team reduzieren lässt, eine Copy-Paste-CI-Pipeline und die Bereitstellungsmuster ohne Ausfallzeiten, die Freitags-Releases langweilig machen.

In diesem Ratgeber
  1. Warum sich Pipelines lohnen (auch solo)
  2. Ein Git-Workflow, der verkleinert werden kann
  3. Die CI-Pipeline, bereit zum Kopieren und Einfügen
  4. Bereitstellungsoptionen ohne Ausfallzeiten
  5. Nach der Bereitstellung
  6. Migrationen und Rollback-Strategie
  7. FAQ

Warum sich Pipelines lohnen (auch solo)

CI/CD ist keine Unternehmenszeremonie – es ist die günstigste Versicherung, die eine Codebasis kaufen kann:

Ein Git-Workflow, der verkleinert werden kann

Überspringen Sie git-flow, es sei denn, Sie versenden verpackte Veröffentlichungen. Bei Web-Apps gewinnt Trunk-basiert mit kurzlebigen Zweigen:

Die CI-Pipeline, bereit zum Kopieren und Einfügen

Vier Phasen, die jeweils schnell scheitern: Stil, statische Analyse, Tests, Sicherheitsaudit. Hier ist eine vollständige GitHub Aktionsworkflow für eine Laravel-App (einbinden). .github/workflows/ci.yml):

name: CI

on:
  pull_request:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.4'
          extensions: mbstring, xml, curl, zip, intl, pdo_sqlite
          coverage: none

      - name: Install dependencies
        run: composer install --prefer-dist --no-progress

      - name: Prepare environment
        run: |
          cp .env.example .env
          php artisan key:generate

      - name: Code style (Pint)
        run: vendor/bin/pint --test

      - name: Static analysis (Larastan)
        run: vendor/bin/phpstan analyse --memory-limit=1G

      - name: Tests (Pest)
        run: php artisan test --parallel

      - name: Security audit
        run: composer audit

Notizen, die es wert sind, gestohlen zu werden:

Bereitstellungsoptionen ohne Ausfallzeiten

Null Ausfallzeit bedeutet: das neue Release neben dem alten erstellen, atomar austauschen, Worker neu starten. Drei Möglichkeiten, es zu bekommen:

1. Webhook Push-to-Deploy (empfohlene Standardeinstellung)

Ihr Git-Host ruft bei Push einen webhook auf; Der Server erstellt eine neue Version releases/, läuft composer install, migrate --force und Caches, tauscht die current Symlink und startet Warteschlangenarbeiter neu. Genau das ist es Cipi konfiguriert automatisch, wenn Sie GitHub oder GitLab mit einer App verbinden – Schlüssel, webhook, Releases und Symlink bereitstellen Swap inklusive, plus Knoten-Asset-Builds für die Bereitstellung und Datenbank-Snapshots vor der Bereitstellung in Cipi 5. Einrichtungskosten: einscipi app create.

2. CI-gesteuerte Bereitstellung (SSH von Aktionen)

Die Pipeline erstellt Artefakte und überträgt sie über SSH (Deployer oder rsync + Skript). Mehr Kontrolle, mehr YAML zu besitzen – es lohnt sich, wenn Sie Build-Artefakte benötigen, die in allen Umgebungen identisch sind.

3. Der Hybrid

CI führt Tests durch; Bei Grün wird der Deploy webhook erreicht. Sie erhalten geschlossene Bereitstellungen, ohne die Bereitstellung zu verschieben Logik in CI. Bei Cipi ist das eine Einzeile curl am Ende des Workflows.

Nach der Bereitstellung

Migrationen und Rollback-Strategie

Setzen Sie dies mit Cipi in die Praxis um

Cipi ist die kostenlose open-source Bereitstellung CLI, auf die in diesem Handbuch verwiesen wird: Ein Befehl verwandelt einen neuen Ubuntu VPS in einen gehärteten Produktionsserver für Laravel – Nginx, PHP-FPM oder Octane, MariaDB oder PostgreSQL, Warteschlangen, Scheduler, SSL und Git-Bereitstellungen ohne Ausfallzeiten enthalten.

wget -O - https://cipi.sh/setup.sh | bash

Häufig gestellte Fragen

Benötige ich CI/CD als Solo-Entwickler von Laravel?

Ja – wohl mehr als ein Team, weil niemand Ihre Arbeit überprüft. Eine Pipeline, die bei jedem Push ein Pint-, Larastan-, Pest- und composer-Audit ausführt, ist ein unermüdliches zweites Augenpaar, und webhook-basierte Bereitstellungen bedeuten, dass der Versand kein manuelles Ritual mehr ist.

Wie erhalte ich Bereitstellungen ohne Ausfallzeiten für Laravel?

Verwenden Sie das Release-Muster: Erstellen Sie die neue Version in einem eigenen Verzeichnis, führen Sie Migrationen und Caches aus, tauschen Sie dann atomar einen Symlink aus und starten Sie die Warteschlangenarbeiter neu. Tools wie Cipi konfigurieren dies automatisch für GitHub- und GitLab-Pushs, sodass Sie Bereitstellungen ohne Ausfallzeiten erhalten, ohne Bereitstellungsskripts schreiben zu müssen.

Wie lange sollte eine Laravel CI-Pipeline dauern?

Für den Normalfall dauert es weniger als fünf Minuten, sonst beginnen die Entwickler damit, ihn zu umgehen. Führen Sie Pest parallel aus, speichern Sie Composer-Abhängigkeiten im Cache und verlagern Sie langsame Browsertests auf einen nächtlichen Job, anstatt jeden PR zu blockieren.

Sind Datenbankmigrationen bei Bereitstellungen ohne Ausfallzeiten sicher?

Ja, mit dem Expand/Contract-Muster: Nehmen Sie zuerst additive Änderungen vor, stellen Sie Code bereit, der mit beiden Schemata funktioniert, und entfernen Sie alte Spalten in einer späteren Version. Behalten Sie destruktive Änderungen in ihrer eigenen Bereitstellung bei und erstellen Sie vor der Bereitstellung einen Snapshot (automatisch in Cipi 5), damit Fehler reversibel sind.

Ist der Einsatz freitags sicher?

Mit kleinen Unterschieden, einer grünen Pipeline, Gesundheitsprüfungen und Rollback mit einem Befehl – ​​ja. Die Freitagsangst ist ein Symptom für manuelle Bereitstellungen in großen Mengen. Korrigieren Sie den Vorgang und der Wochentag spielt keine Rolle mehr.

Lesen Sie weiter