CI/CD pour projets PHP : configuration de GitHub Actions de zéro

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

CI/CD pour les projets PHP : configuration de GitHub Actions



Le développement moderne en PHP est impensable sans l'automatisation des processus de test, de build et de déploiement. Le CI/CD (Continuous Integration / Continuous Deployment) permet aux équipes de publier des mises à jour plus rapidement, de réduire le nombre d'erreurs et de maintenir une haute qualité de code. Dans cet article, nous allons détailler comment configurer des pipelines CI/CD pour des projets PHP à l'aide de GitHub Actions — l'outil d'automatisation intégré de GitHub.



Nous examinerons des exemples concrets pour les frameworks populaires (Laravel, Symfony), apprendrons à exécuter des tests, à vérifier le style de code, à collecter des artefacts et à déployer automatiquement sur un serveur. Cet article sera utile aussi bien aux débutants qu'aux développeurs expérimentés souhaitant optimiser leur workflow.



1. Bases de GitHub Actions pour PHP



GitHub Actions est une plateforme d'automatisation des workflows directement dans le dépôt. Un workflow est décrit dans des fichiers YAML, stockés dans le répertoire .github/workflows/. Chaque workflow se compose d'un ou plusieurs jobs, qui s'exécutent sur des machines virtuelles (runner) lors de la survenue d'événements spécifiques (push, pull request, release, etc.).



Pour les projets PHP, les étapes clés incluent généralement :



  • Installation des dépendances via Composer
  • Configuration de l'environnement (version PHP, extensions, base de données)
  • Exécution de l'analyse statique (PHPStan, Psalm)
  • Exécution des tests unitaires (PHPUnit, Pest)
  • Vérification du style de code (PHP CS Fixer, Laravel Pint)
  • Build et publication d'une image Docker
  • Déploiement sur le serveur de production/staging


Un workflow minimal pour un projet PHP ressemble à ceci :



name: PHP CI

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

jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, intl, pdo_mysql coverage: xdebug - name: Install dependencies run: composer install --prefer-dist --no-progress - name: Run tests run: vendor/bin/phpunit --testdox


Ce workflow s'exécute à chaque push ou création de pull request vers la branche main. Il vérifie la conformité du code aux normes et exécute les tests.



2. Configuration avancée : tests, linting et analyse statique



Un projet réel nécessite une vérification plus approfondie de la qualité du code. Prenons l'exemple du framework Laravel avec un ensemble complet d'outils.



Créons le fichier .github/workflows/laravel-ci.yml :



name: Laravel CI/CD

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

jobs: quality: runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_DATABASE: testing MYSQL_USER: user MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: root ports: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

steps: - uses: actions/checkout@v4

- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mbstring, intl, pdo_mysql, bcmath, redis coverage: pcov tools: composer:v2

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

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

- name: Run Laravel Pint (Code Style) run: vendor/bin/pint --test

- name: Run PHPStan (Static Analysis) run: vendor/bin/phpstan analyse --memory-limit=2G

Blogs

Book Recommendations