GitHub Actions pour vos projets PHP
GitHub Actions offre une solution de CI/CD intégrée directement dans votre dépôt. Voici comment configurer un pipeline complet.
Workflow de test
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
tests:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test
ports:
- 3306:3306
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mbstring, pdo_mysql, intl
coverage: xdebug
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Run PHPStan
run: vendor/bin/phpstan analyse src
- name: Run tests
run: php bin/phpunit --coverage-clover coverage.xml
env:
DATABASE_URL: mysql://root:[email protected]:3306/test
Déploiement automatique
deploy:
needs: tests
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy to production
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: deploy
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/app
git pull origin main
composer install --no-dev
php bin/console cache:clear
php bin/console doctrine:migrations:migrate -n
Bonnes pratiques
- Utiliser le cache des dépendances Composer
- Paralléliser les jobs de test et de lint
- Protéger les branches avec des status checks requis
- Stocker les secrets dans GitHub Secrets