Mise en place d'une pipeline d'intégration continue pour des applications Laravel en utilisant GitHub Actions
Découvrez comment configurer une pipeline d'intégration continue pour une application Laravel en utilisant GitHub Actions et assurez-vous que votre code reste de haute qualité.
Dans le développement logiciel moderne, l'intégration continue (CI) est essentielle pour assurer la qualité et la stabilité du code. Elle permet d'automatiser les tests, de vérifier que les modifications n’introduisent pas de bugs et de faciliter la collaboration entre développeurs. Cet article vous guidera pour configurer une pipeline d’intégration continue pour une application Laravel en utilisant GitHub Actions.
Pourquoi adopter l'intégration continue ?
Adopter une pipeline d'intégration continue apporte de nombreux avantages :
- Automatisation des tests : Assurez-vous que chaque modification du code ne casse pas les fonctionnalités existantes.
- Qualité de code constante : Appliquez automatiquement des règles de qualité de code.
- Feedback rapide : Recevez un retour rapide pour détecter et corriger les problèmes au plus tôt.
- Amélioration de la collaboration : Facilitez l'intégration des changements dans le codebase commun.
Prérequis
Avant de commencer, assurez-vous d’avoir les éléments suivants :
- Une application Laravel hébergée dans un dépôt GitHub.
- Des notions de base sur l’utilisation de GitHub Actions.
Étape 1 : Créer un fichier de workflow GitHub Actions
GitHub Actions est un service intégré à GitHub permettant de créer des workflows automatisés, parfaits pour mettre en place une pipeline CI.
1. Créez le fichier de workflow
Dans le répertoire de votre projet Laravel, créez un dossier nommé .github/workflows
et un fichier ci.yml
à l'intérieur.
mkdir -p .github/workflows
touch .github/workflows/ci.yml
2. Définissez le workflow
Ouvrez le fichier ci.yml
et ajoutez la configuration de la pipeline CI :
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.0'
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Copy .env.example to .env
run: cp .env.example .env
- name: Generate application key
run: php artisan key:generate
- name: Create test database
run: |
sudo apt-get update
sudo apt-get install -y sqlite3
touch database/testing.sqlite
- name: Run migrations
run: php artisan migrate --database=sqlite
- name: Run tests
run: vendor/bin/phpunit --configuration phpunit.xml
Ce workflow déclenche la pipeline CI à chaque push
ou pull_request
vers la branche main
. Il configure PHP, installe les dépendances, crée un environnement de test, configure une base de données SQLite, exécute les migrations et lance les tests unitaires.
Étape 2 : Configurer les variables d'environnement
Assurez-vous que votre fichier .env.example
contient toutes les variables nécessaires pour l’environnement de test. Par exemple :
APP_NAME=LaravelApp
APP_ENV=testing
APP_KEY=base64:YOUR_KEY_HERE
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=sqlite
DB_DATABASE=/path/to/database/testing.sqlite
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
Ces variables sont nécessaires pour que votre application s’exécute correctement dans l’environnement de test configuré par GitHub Actions.
Étape 3 : Écrire des tests pour vos composants Laravel
Pour maximiser l’efficacité de l’intégration continue, il est essentiel de disposer d’une série de tests couvrant toutes les fonctionnalités critiques de votre application. Laravel propose des fonctionnalités intégrées pour les tests, y compris PHPUnit et des fonctionnalités spécifiques pour tester les composants d’interface utilisateur.
1. Créer un fichier de test
Utilisez la commande suivante pour générer un test :
php artisan make:test ExampleFeatureTest
2. Rédiger un exemple de test
Voici un exemple de fichier de test simple pour vérifier une route de votre application :
// tests/Feature/ExampleFeatureTest.php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ExampleFeatureTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function it_displays_the_home_page()
{
$response = $this->get('/');
$response->assertStatus(200);
}
/** @test */
public function it_interacts_with_database_correctly()
{
// Créez un enregistrement fictif et testez l'interaction avec la base de données
}
}
Assurez-vous de couvrir les fonctionnalités clés de votre application pour que la CI puisse détecter rapidement les régressions et autres erreurs.
Étape 4 : Commit et Push des modifications
Une fois le fichier de workflow et les tests configurés, ajoutez vos modifications au dépôt GitHub :
git add .
git commit -m "Setup CI for Laravel with GitHub Actions"
git push origin main
Étape 5 : Surveiller la pipeline CI
Rendez-vous dans l'onglet Actions de votre dépôt GitHub pour surveiller l’état de votre pipeline CI. Vous devriez voir le workflow s'exécuter pour chaque push
ou pull request
vers la branche main
. Si tous les tests passent, cela signifie que votre pipeline CI est configuré correctement.
Conclusion
La mise en place d’une pipeline d’intégration continue pour vos applications Laravel à l’aide de GitHub Actions est une excellente manière d’assurer une qualité de code constante et d’améliorer la collaboration au sein de votre équipe. En suivant les étapes ci-dessus, vous pourrez facilement configurer une CI pour automatiser vos tests, réduire les erreurs et faciliter le déploiement. Cette méthode de travail est particulièrement utile pour les équipes de développement en Tunisie, où les exigences en matière de qualité de code augmentent dans les projets digitaux et technologiques.