Dans cette procédure, je vais vous expliquer comment automatisez vos tests Symfony 6 dans Github avec les Github Actions. Les Github Actions vous permettent d’automatiser vos tests dans vos applications et vous informer cas de problème avec l’un de vos Commits.
Prérequis :
- Avoir une application Symfony 6
- Avoir des tests dans son application
- Avoir un compte Github et un Repository Github
Intégrer des Actions Github dans son projet Symfony 6 :
Pour démarrer rendez-vous dans votre Repository Github du projet qui contient votre application Symfony 6.
Ensuite rendez-vous dans la catégorie « Actions » :
Puis cliquez sur Nouveau Workflow :
Cliquez ensuite sur le bouton Configure qui se trouve dans la carte Symfony :
Je vous propose ce Workflow si vous utilisez du JWT dans votre application :
name: Symfony
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
symfony-tests:
runs-on: ubuntu-latest
steps:
# To automatically get bug fixes and new Php versions for shivammathur/setup-php,
# change this to (see https://github.com/shivammathur/setup-php#bookmark-versioning):
# uses: shivammathur/setup-php@v2
- uses: shivammathur/setup-php@2cb9b829437ee246e9b3cac53555a39208ca6d28
with:
php-version: '8.1'
- uses: actions/checkout@v3
- name: Copy .env.test.local
run: php -r "file_exists('.env.test.local') || copy('.env.test', '.env.test.local');"
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Generate SSL Key for JWT
run: php bin/console lexik:jwt:generate-keypair
- name: Create Database
run: |
mkdir -p data
touch data/database.sqlite
- name: Migrate database
run: php bin/console d:m:m --no-interaction --env=test
- name: Loading fixtures
run: php bin/console d:f:l --no-interaction --env=test
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DATABASE_URL: sqlite:///%kernel.project_dir%/var/database_test.db
run: vendor/bin/phpunit
Sinon si vous n’utilisez pas de JWT, vous pouvez utilisez ce Workflow :
name: Symfony
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
symfony-tests:
runs-on: ubuntu-latest
steps:
# To automatically get bug fixes and new Php versions for shivammathur/setup-php,
# change this to (see https://github.com/shivammathur/setup-php#bookmark-versioning):
# uses: shivammathur/setup-php@v2
- uses: shivammathur/setup-php@2cb9b829437ee246e9b3cac53555a39208ca6d28
with:
php-version: '8.1'
- uses: actions/checkout@v3
- name: Copy .env.test.local
run: php -r "file_exists('.env.test.local') || copy('.env.test', '.env.test.local');"
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Create Database
run: |
mkdir -p data
touch data/database.sqlite
- name: Migrate database
run: php bin/console d:m:m --no-interaction --env=test
- name: Loading fixtures
run: php bin/console d:f:l --no-interaction --env=test
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DATABASE_URL: sqlite:///%kernel.project_dir%/var/database_test.db
run: vendor/bin/phpunit
Ensuite après avoir commit ce Workflow dans votre Repository Github, Github va automatiquement exécuter vos tests et vous informer en cas d’échecs.
Sources :
https://docs.github.com/fr/actions