Développement Web GitHub CI/CD DevOps

GitHub Actions : automatiser CI/CD facilement

Créez des pipelines CI/CD avec github Actions : tests automatiques, déploiement, Docker, secrets et matrix builds. Guide complet avec exemples YAML.

Benjamin Schweitzer Benjamin Schweitzer
Lundi 7 avril 2025
4 min de lecture
GitHub Actions : automatiser CI/CD facilement

GitHub Actions est la solution CI/CD intégrée à GitHub, disponible gratuitement pour les projets open source et avec des minutes généreuses pour les projets privés. Automatisez vos tests, votre déploiement et votre workflow directement depuis votre dépôt github.

Concepts de base GitHub Actions

Un workflow GitHub Actions est un fichier YAML dans .github/workflows/. Il est déclenché par des événements (push, pull request, schedule, webhook) et contient des jobs exécutés sur des runners (machines virtuelles Ubuntu, Windows, macOS).

name: CI

on:
  push:
    branches: [main, develop]
  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.3'
      - run: composer install
      - run: php artisan test

Pipeline CI complet pour PHP

jobs:
  ci:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_DATABASE: test_db
          MYSQL_ROOT_PASSWORD: secret
        options: --health-cmd="mysqladmin ping" --health-interval=10s
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with: { php-version: '8.3', extensions: pdo_mysql }
      - run: composer install --no-progress
      - run: cp .env.test .env
      - run: php artisan migrate --force
      - run: ./vendor/bin/phpunit --coverage-text
      - name: Upload coverage
        uses: codecov/codecov-action@v3

Déploiement automatique avec SSH

  deploy:
    needs: ci
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /var/www/monsite
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan cache:clear

Secrets et variables d'environnement

Les secrets sensibles (clés SSH, tokens, mots de passe) se configurent dans les Settings du dépôt github sous Secrets and variables > Actions. Ils sont chiffrés et masqués dans les logs.

env:
  DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
  API_KEY: ${{ secrets.STRIPE_SECRET_KEY }}

Matrix builds : tester plusieurs versions

strategy:
  matrix:
    php: ['8.1', '8.2', '8.3']
    db: ['mysql:8.0', 'mysql:5.7']

Les matrix builds permettent de tester votre code sur plusieurs configurations simultanément, garantissant la compatibilité.

Actions réutilisables et marketplace

Le Marketplace GitHub contient des milliers d'actions préconstruites. Les plus utiles : actions/cache (mise en cache des dépendances), actions/upload-artifact (partage de fichiers entre jobs), docker/build-push-action (build et push d'images Docker).

Créez vos propres actions réutilisables pour standardiser les workflows de votre équipe. La documentation GitHub Actions couvre tous les scénarios avancés.

Conclusion

GitHub Actions transforme votre dépôt git en une plateforme CI/CD complète sans infrastructure supplémentaire. Commencez par un workflow simple qui exécute vos tests à chaque push, puis ajoutez progressivement le déploiement automatique, les matrix builds et les notifications. L'automatisation libère du temps pour ce qui compte vraiment : développer.

Pour industrialiser votre CI/CD, explorez les reusable workflows pour partager des pipelines entre dépôts, les environments avec règles d'approbation pour les déploiements production, et les self-hosted runners pour des builds sur votre propre infrastructure. Intégrez des scans de sécurité avec CodeQL, des audits de dépendances avec Dependabot, et des analyses de qualité avec SonarCloud. Utilisez actions/cache pour diviser par 3 la durée de vos pipelines. Consultez le Marketplace GitHub Actions pour des milliers d'actions prêtes à l'emploi couvrant tous les cas d'usage DevOps courants et avancés.

Sécurité des secrets

Stockez toujours vos tokens et clés API dans les GitHub Secrets (Settings → Secrets and variables), jamais en dur dans les workflows. Utilisez ${{ secrets.NOM_SECRET }} dans vos YAML. Pour les organisations, les Organization Secrets partagent les secrets entre dépôts sans duplication. Auditez régulièrement les permissions des GitHub Apps connectées à vos dépôts.

Permissions et sécurité

Appliquez le principe de moindre privilège aux workflows GitHub Actions : définissez des permissions explicites au niveau du workflow (permissions: contents: read) plutôt d'utiliser les permissions par défaut trop larges. Auditez les actions tierces utilisées (préférez les actions officielles GitHub ou celles d'éditeurs reconnus) et épinglez-les à un hash de commit spécifique (uses: actions/checkout@a81bbbf8298) pour éviter les supply chain attacks via des tags mutables.

Cet article vous a plu ?

Donnez-lui une note, ça m'aide vraiment !

Partager l'article