mirror of
https://github.com/tips-of-mine/gestion-certificats2.git
synced 2025-06-28 01:18:42 +02:00
feat: Mise en place de PHPUnit et d'une pipeline CI/CD GitHub Actions
Ce commit introduit un environnement de test avec PHPUnit et configure une pipeline d'intégration continue et de déploiement continu (CI/CD) utilisant GitHub Actions. Les changements suivants ont été apportés : 1. **Configuration de PHPUnit** : * Ajout d'un fichier `php/composer.json` pour gérer les dépendances PHP, avec PHPUnit inclus comme dépendance de développement. * Création d'un fichier de configuration `php/phpunit.xml.dist` pour PHPUnit. * Mise à jour du `php/Dockerfile` pour installer Composer et les dépendances du projet (y compris celles de développement) lors de la construction de l'image Docker. 2. **Premier Test** : * Création d'un répertoire `php/tests/` pour héberger les tests. * Ajout d'un test unitaire initial (`php/tests/Utils/DarkModeTest.php`) pour la classe `App\Utils\DarkMode` afin de valider la configuration des tests. 3. **Pipeline CI/CD avec GitHub Actions** : * Création d'un workflow GitHub Actions dans `.github/workflows/ci.yml`. * La pipeline se déclenche sur les `push` et `pull_request` vers la branche `main`. * Elle installe PHP, met en cache les dépendances Composer, installe les dépendances et exécute la suite de tests PHPUnit. 4. **Documentation** : * Mise à jour des fichiers `README.md` et `docs/languages/README.fr.md` pour inclure des instructions sur la manière d'exécuter les tests localement et une description de la nouvelle pipeline CI/CD. Ces ajouts permettent d'améliorer la qualité du code en automatisant les tests et en s'assurant qu'aucune régression fonctionnelle n'est introduite lors de futurs développements.
This commit is contained in:
35
.github/workflows/ci.yml
vendored
Normal file
35
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
name: PHP CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.3' # ou la version que vous utilisez
|
||||
extensions: mbstring, xml, pdo, zip, intl # Ajoutez les extensions nécessaires
|
||||
tools: composer # Installe Composer
|
||||
|
||||
- name: Cache Composer dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: php/vendor # Le chemin vers le répertoire vendor dans php/
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('php/composer.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --working-dir=php
|
||||
|
||||
- name: Run PHPUnit tests
|
||||
run: php/vendor/bin/phpunit --configuration php/phpunit.xml.dist
|
@ -17,3 +17,7 @@ Pour des instructions et informations spécifiques dans votre langue, veuillez c
|
||||
* 🇸🇦 [العربية](./docs/languages/README.ar.md) (Utilisation du drapeau de l'Arabie Saoudite comme représentation commune pour la langue arabe)
|
||||
* 🇮🇳 [हिन्दी](./docs/languages/README.hi.md)
|
||||
* 🇨🇳 [中文 (普通话)](./docs/languages/README.zh.md)
|
||||
|
||||
## Tests et CI/CD
|
||||
|
||||
Le projet intègre des tests unitaires avec PHPUnit et une pipeline d'intégration continue avec GitHub Actions pour assurer la qualité du code. Pour plus de détails sur la stratégie de test et la configuration de la CI/CD, veuillez consulter la [documentation en français](./docs/languages/README.fr.md#tests).
|
||||
|
@ -2,4 +2,37 @@
|
||||
|
||||
La documentation pour le projet Gestion Certificat en Français est en cours de rédaction.
|
||||
|
||||
## Tests
|
||||
|
||||
Ce projet utilise PHPUnit pour les tests unitaires. Pour exécuter les tests localement, suivez ces étapes :
|
||||
|
||||
1. **Installez les dépendances de développement :**
|
||||
Assurez-vous d'avoir Composer installé. Ensuite, naviguez vers le répertoire `php/` et exécutez :
|
||||
```bash
|
||||
composer install
|
||||
```
|
||||
Cette commande installera PHPUnit et les autres dépendances nécessaires au développement.
|
||||
|
||||
2. **Lancez la suite de tests :**
|
||||
Une fois les dépendances installées, vous pouvez exécuter la suite de tests PHPUnit. Depuis la racine du projet, exécutez :
|
||||
```bash
|
||||
php/vendor/bin/phpunit --configuration php/phpunit.xml.dist
|
||||
```
|
||||
Ou, si vous êtes déjà dans le répertoire `php/` :
|
||||
```bash
|
||||
vendor/bin/phpunit --configuration phpunit.xml.dist
|
||||
```
|
||||
|
||||
## CI/CD (Intégration Continue / Déploiement Continu)
|
||||
|
||||
Nous utilisons GitHub Actions pour automatiser l'exécution des tests à chaque fois que des modifications sont poussées (`push`) ou qu'une demande de tirage (`pull_request`) est faite sur la branche `main`.
|
||||
|
||||
Le workflow, défini dans `.github/workflows/ci.yml`, effectue les actions suivantes :
|
||||
- Prépare l'environnement avec la version PHP spécifiée.
|
||||
- Met en cache les dépendances Composer pour accélérer les builds.
|
||||
- Installe les dépendances du projet.
|
||||
- Exécute la suite de tests PHPUnit.
|
||||
|
||||
Cela garantit que toute nouvelle modification est automatiquement testée, aidant à maintenir la qualité et la stabilité du code.
|
||||
|
||||
[Retour au README principal](../../README.md)
|
||||
|
@ -44,8 +44,15 @@ COPY php.ini /usr/local/etc/php/conf.d/40-custom.ini
|
||||
# Définir le répertoire de travail par défaut
|
||||
WORKDIR /var/www/html
|
||||
|
||||
# Optionnel: Installer Composer si vous utilisez un framework PHP plus avancé
|
||||
# COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||
# Installer Composer
|
||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||
|
||||
# Copier les fichiers de dépendances et installer les dépendances PHP
|
||||
COPY composer.json composer.lock* ./
|
||||
RUN composer install --no-dev --optimize-autoloader
|
||||
|
||||
# Copier le reste des fichiers de l'application
|
||||
COPY . .
|
||||
|
||||
# Exposer le port FPM (le port 9000 est le port par défaut pour PHP-FPM)
|
||||
EXPOSE 9000
|
||||
|
13
php/composer.json
Normal file
13
php/composer.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.5"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"App\\": "src/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "phpunit"
|
||||
}
|
||||
}
|
16
php/phpunit.xml.dist
Normal file
16
php/phpunit.xml.dist
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
|
||||
bootstrap="vendor/autoload.php"
|
||||
colors="true">
|
||||
<testsuites>
|
||||
<testsuite name="App Test Suite">
|
||||
<directory>tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<coverage processUncoveredFiles="true">
|
||||
<include>
|
||||
<directory suffix=".php">src</directory>
|
||||
</include>
|
||||
</coverage>
|
||||
</phpunit>
|
15
php/tests/Utils/DarkModeTest.php
Normal file
15
php/tests/Utils/DarkModeTest.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Tests\Utils;
|
||||
|
||||
use App\Utils\DarkMode;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class DarkModeTest extends TestCase
|
||||
{
|
||||
public function testIsDarkModeByDefault()
|
||||
{
|
||||
$darkMode = new DarkMode();
|
||||
$this->assertFalse($darkMode->isDarkModeByDefault(), "DarkMode should not be enabled by default.");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user