Accueil » Symfony 6 et Github Actions

Symfony 6 et Github Actions

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.

Logo Symfony

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 » :

Symfony 6 et Github Actions - Github Actions

Puis cliquez sur Nouveau Workflow :

Symfony 6 et Github Actions - Symfony 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

Susceptible de vous intéresser :