CI/CD für PHP-Projekte: GitHub Actions von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in CI/CD für PHP-Projekte mit GitHub Actions



Moderne PHP-Anwendungsentwicklung ist ohne Automatisierung nicht möglich. Manuelles Testen und Deployment sind nicht nur zeitaufwendig, sondern auch fehleranfällig. CI/CD (Continuous Integration / Continuous Deployment) löst diese Probleme, indem es die Code-Überprüfung und die Auslieferung an den Server automatisiert. Eines der beliebtesten Werkzeuge dafür ist GitHub Actions.



GitHub Actions ist eine integrierte Plattform zur Automatisierung von Arbeitsabläufen (Workflows), mit der Sie Tests, Linter, Builds und Deployments direkt aus Ihrem GitHub-Repository ausführen können. In diesem Artikel werden wir uns ansehen, wie Sie eine vollständige CI/CD-Pipeline für ein PHP-Projekt einrichten: vom einfachen Teststart bis zum automatischen Deployment auf den Produktionsserver.



Wir verwenden ein Beispiel auf Basis von Laravel, aber alle Prinzipien sind auf jedes PHP-Framework (Symfony, Yii, WordPress usw.) anwendbar. Sie erfahren, wie Sie YAML-Konfigurationen schreiben, Testmatrizen verwenden, Abhängigkeiten cachen und Code sicher deployen.



Hauptteil



1. Grundlagen von GitHub Actions: Struktur eines Workflows



Ein Workflow ist ein automatisierter Prozess, der durch ein bestimmtes Ereignis (Push, Pull Request, Tag-Erstellung) ausgelöst wird. Jeder Workflow wird in einer YAML-Datei beschrieben, die im Verzeichnis .github/workflows/ Ihres Repositorys gespeichert ist.



Grundlegende Struktur der Datei .github/workflows/ci.yml:



name: CI Pipeline

on: push: branches: [ main, develop ] pull_request: branches: [ main ]

jobs: test: runs-on: ubuntu-latest

steps: - name: Checkout repository uses: actions/checkout@v4

- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, xml, bcmath, pdo_mysql coverage: xdebug

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

- name: Run PHPUnit tests run: vendor/bin/phpunit --coverage-text


Lassen Sie uns die wichtigsten Elemente durchgehen:

  • on — Auslöser: Push in main/develop, Pull Request in main.
  • jobs — Eine Reihe von Aufgaben (Jobs), die parallel oder sequenziell ausgeführt werden.
  • runs-on — Das Betriebssystem für die Ausführung (normalerweise ubuntu-latest).
  • steps — Die Abfolge der Schritte innerhalb eines Jobs.
  • uses — Vorgefertigte Actions aus dem Marketplace (z. B. shivammathur/setup-php).
  • run — Ausführung eines Shell-Befehls.


2. Erweiterte Konfiguration: Testmatrix und Caching



Für größere Projekte ist es sinnvoll, mehrere PHP-Versionen und Abhängigkeiten gleichzeitig zu testen. Dies geschieht über eine Matrix-Strategie (matrix strategy). Wichtig ist auch das Cachen des Composer-Vendor-Ordners, um die Ausführung des Workflows zu beschleunigen.



Beispiel mit Matrix und Cache:



name: Advanced CI

on: [push, pull_request]

jobs: test: runs-on: ubuntu-latest strategy: matrix: php: [ '8.1', '8.2', '8.3' ] dependency-stability: [ prefer-stable, prefer-lowest ]

steps: - uses: actions/checkout@v4

- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: mbstring, pdo, gd coverage: none

- name: Cache Composer packages uses: actions/cache@v3 with: path: vendor key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-php-${{ matrix.php }}-composer-

- name: Install dependencies run: composer install --${{ matrix.dependency-stability }} --no-interaction

- name: Run test

Blogs

Buchempfehlungen