0Pricing
PHP Academy · Leçon

Déployer avec GitHub Actions

Automatiser les étapes de compilation, de test et de déploiement SSH dans un flux de travail GitHub Actions.

Déployer avec GitHub Actions est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Qu’est-ce que GitHub Actions ?

GitHub Actions est une plateforme d’intégration et de déploiement continus intégrée à GitHub. Les workflows définis dans .github/workflows/*.yml s’exécutent automatiquement lors d’un envoi, d’une demande de fusion ou selon un calendrier.

Structure de base d’un workflow

Un workflow se compose d’un ou plusieurs travaux, chacun comprenant des étapes.

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"
      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Run tests
        run: vendor/bin/phpunit

Étape de déploiement via SSH

Déployez sur un serveur via SSH après la réussite des tests.

      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /srv/myapp
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan config:cache
            php artisan route:cache
            sudo systemctl reload php8.3-fpm

Secrets GitHub

Stockez les valeurs sensibles, comme les clés SSH, les jetons d’API et les mots de passe de bases de données, en tant que secrets chiffrés du dépôt dans Paramètres → Secrets et variables.

Mise en cache des dépendances

Mettez les paquets Composer en cache entre les exécutions afin d’accélérer les workflows.

      - name: Cache Composer packages
        uses: actions/cache@v4
        with:
          path: vendor
          key: ${{ runner.os }}-composer-${{ hashFiles("composer.lock") }}

Exécution des tests

Incluez un conteneur de service MySQL ou PostgreSQL pour les tests d’intégration.

services:
  mysql:
    image: mysql:8
    env:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: secret
    ports: [3306:3306]

Variables d’environnement dans Actions

Transmettez les secrets sous forme de variables d’environnement aux étapes du workflow.

      - name: Run tests
        env:
          DB_HOST: 127.0.0.1
          DB_DATABASE: test
          DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
        run: vendor/bin/phpunit

Barrières de qualité du code

Bloquez les déploiements si les vérifications de qualité du code échouent.

      - name: PHPStan static analysis
        run: vendor/bin/phpstan analyse src --level=6
      - name: PHP_CodeSniffer
        run: vendor/bin/phpcs src --standard=PSR12

Tests matriciels

Testez simultanément plusieurs versions de PHP.

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.2", "8.3"]
    steps:
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}

Stratégies de déploiement

Approches courantes : extraction directe avec git pull (simple), rsync (synchronisation rapide des fichiers), bleu-vert (sans interruption de service), Deployer PHP (sans interruption de service automatisée). Choisissez en fonction de votre tolérance aux interruptions.

Résumé

Définissez les workflows dans .github/workflows/*.yml. Exécutez les tests à chaque envoi et déployez lors des fusions dans la branche principale. Mettez les dépendances en cache, stockez les secrets dans GitHub Secrets et ajoutez des barrières de qualité avant le déploiement.

Vérification rapide

Où les valeurs sensibles, comme les clés SSH, sont-elles stockées pour GitHub Actions ?

Questions Fréquemment Posées

La leçon « Déployer avec GitHub Actions » est-elle gratuite ?

Oui — le texte complet de « Déployer avec GitHub Actions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Déployer avec GitHub Actions » ?

Automatiser les étapes de compilation, de test et de déploiement SSH dans un flux de travail GitHub Actions. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Déployer avec GitHub Actions » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configuration de Nginx et PHP-FPM
  2. Variables d’environnement et fichiers .env
  3. Déployer avec GitHub Actions
  4. Conteneuriser une application PHP avec Docker
← Retour à PHP Academy