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.