CI/CD pour projets PHP : GitHub Actions de A à Z

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

Introduction au CI/CD pour les projets PHP avec GitHub Actions



Le développement moderne d'applications PHP est impossible sans automatisation. Les tests et le déploiement manuels sont non seulement longs, mais aussi source d'erreurs. Le CI/CD (Continuous Integration / Continuous Deployment) résout ces problèmes en automatisant la vérification du code et sa livraison sur le serveur. L'un des outils les plus populaires pour cela est GitHub Actions.



GitHub Actions est une plateforme intégrée d'automatisation des workflows qui permet d'exécuter des tests, des linters, des builds et des déploiements directement depuis votre dépôt GitHub. Dans cet article, nous allons voir comment configurer un pipeline CI/CD complet pour un projet PHP : de l'exécution simple des tests au déploiement automatique sur un serveur de production.



Nous utiliserons un exemple basé sur Laravel, mais tous les principes s'appliquent à n'importe quel framework PHP (Symfony, Yii, WordPress, etc.). Vous apprendrez à écrire des configurations YAML, à utiliser des matrices de test, à mettre en cache les dépendances et à déployer du code en toute sécurité.



Partie principale



1. Bases de GitHub Actions : structure d'un workflow



Un workflow est un processus automatisé qui se déclenche sur un événement spécifique (push, pull request, création de tag). Chaque workflow est décrit dans un fichier YAML stocké dans le répertoire .github/workflows/ de votre dépôt.



Structure de base du fichier .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


Analysons les éléments clés :

  • on — les déclencheurs : push sur main/develop, pull request sur main.
  • jobs — ensemble de tâches (jobs) exécutées en parallèle ou séquentiellement.
  • runs-on — le système d'exploitation pour l'exécution (généralement ubuntu-latest).
  • steps — la séquence d'étapes à l'intérieur d'un job.
  • uses — des actions prêtes à l'emploi depuis le marketplace (par exemple, shivammathur/setup-php).
  • run — l'exécution d'une commande shell.


2. Configuration avancée : matrice de test et mise en cache



Pour les grands projets, il est utile de tester plusieurs versions de PHP et de dépendances à la fois. Cela se fait via une matrice de stratégies (matrix strategy). Il est également important de mettre en cache le dossier vendor de Composer pour accélérer l'exécution du workflow.



Exemple avec matrice et 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

Book Recommendations