diff --git a/.gitea/workflows/check-pr.yml b/.gitea/workflows/check-pr.yml index d592406..4dd3181 100644 --- a/.gitea/workflows/check-pr.yml +++ b/.gitea/workflows/check-pr.yml @@ -36,3 +36,9 @@ jobs: node --check "$f" || exit 1 done echo "JS lint OK" + + - name: Tests unitaires PHP + run: php tests/php/run.php + + - name: Tests unitaires JS + run: node tests/js/run.js diff --git a/.gitea/workflows/deploy-prod.yml b/.gitea/workflows/deploy-prod.yml index fcd90ec..526b918 100644 --- a/.gitea/workflows/deploy-prod.yml +++ b/.gitea/workflows/deploy-prod.yml @@ -37,6 +37,12 @@ jobs: done echo "JS lint OK" + - name: Tests unitaires PHP + run: php tests/php/run.php + + - name: Tests unitaires JS + run: node tests/js/run.js + deploy: needs: check runs-on: ubuntu-latest diff --git a/DEPLOY.adoc b/DEPLOY.adoc index b3dd4e1..49acf87 100644 --- a/DEPLOY.adoc +++ b/DEPLOY.adoc @@ -19,7 +19,7 @@ L'architecture retenue (identique à celle de pawol.nu) : └─────────────┘ └──────────────────┘ └─────────────┘ ---- -. *Vérification* (`check-pr.yml` + job `check` de `deploy-prod.yml`) : lint PHP/JS. Les validations AsciiDoc, JSON, XML et shellcheck ne sont plus exécutées dans le CI : elles doivent être passées en local avec `scripts/check.sh`. +. *Vérification* (`check-pr.yml` + job `check` de `deploy-prod.yml`) : lint PHP/JS et tests unitaires PHP/JS. Les validations AsciiDoc, JSON, XML et shellcheck ne sont pas exécutées dans le CI : elles doivent être passées en local avec `scripts/check.sh`. . *Déploiement* (`deploy-prod.yml`) : le runner se connecte en SSH au serveur, qui tient *un clone du dépôt*, fait `git pull --ff-only`, puis *bumpe la version des caches* du Service Worker (`sw.js`) pour déclencher le modal de mise à jour PWA chez les visiteurs. Pourquoi un `git pull` sur le serveur plutôt qu'un rsync : tous les fichiers propres à l'instance (`config.local.php`, `.htaccess`, `sitemap.xml`, `robots.txt`, `site.webmanifest`, `mentions-legales.php`, `dons.php`, `uploads/`, `cache/`) sont ignorés par Git — un pull ne les écrase jamais. Le déploiement est ainsi sans risque pour la configuration de production. @@ -308,10 +308,10 @@ grep STATIC_CACHE_NAME sw.js # le suffixe de version a été bumpé à l'heure d | Événement | Résultat | Pull request vers `main` -| Workflow *Vérification PR* : lint PHP et JS bloquants en cas d'erreur +| Workflow *Vérification PR* : lint PHP/JS et tests unitaires PHP/JS bloquants en cas d'erreur | Push sur `main` -| Workflow *Déploiement PROD* : lint PHP et JS, puis SSH → `git pull --ff-only` → bump de la version des caches `sw.js` → modal de mise à jour chez les visiteurs +| Workflow *Déploiement PROD* : lint PHP/JS et tests unitaires PHP/JS, puis SSH → `git pull --ff-only` → bump de la version des caches `sw.js` → modal de mise à jour chez les visiteurs | En local, avant de pousser | `scripts/check.sh` exécute l'ensemble des vérifications qualité (PHP, JS, AsciiDoc, JSON, XML, shellcheck) diff --git a/README.adoc b/README.adoc index f97c48a..91bde97 100644 --- a/README.adoc +++ b/README.adoc @@ -937,10 +937,10 @@ Ce script lance : lint PHP (`php -l` sur tous les fichiers, samples inclus), lin Pipelines Gitea Actions (`.gitea/workflows/`) : -- *Vérification PR* (`check-pr.yml`) : lint PHP et JS bloquants sur toute pull request vers `main` -- *Déploiement PROD* (`deploy-prod.yml`) : lint PHP et JS sur push sur `main`, puis déploiement en SSH sur le serveur (`git pull --ff-only` + bump de version du Service Worker, qui déclenche le modal de mise à jour chez les visiteurs) +- *Vérification PR* (`check-pr.yml`) : lint PHP et JS, tests unitaires PHP et JS bloquants sur toute pull request vers `main` +- *Déploiement PROD* (`deploy-prod.yml`) : lint PHP et JS, tests unitaires PHP et JS sur push sur `main`, puis déploiement en SSH sur le serveur (`git pull --ff-only` + bump de version du Service Worker, qui déclenche le modal de mise à jour chez les visiteurs) -Les validations AsciiDoc, JSON, XML et shellcheck ne sont plus exécutées dans le CI : elles doivent être passées en local avec `scripts/check.sh`. +Les validations AsciiDoc, JSON, XML et shellcheck ne sont pas exécutées dans le CI : elles doivent être passées en local avec `scripts/check.sh`. La mise en place complète du serveur de production (clone, fichiers d'instance, clés SSH, secrets Gitea) est documentée dans link:DEPLOY.adoc[DEPLOY.adoc]. @@ -1907,10 +1907,10 @@ This script runs: PHP lint (`php -l` on every file, samples included), JS lint ( Gitea Actions pipelines (`.gitea/workflows/`): -- *PR check* (`check-pr.yml`): blocking PHP and JS lint on every pull request to `main` -- *PROD deployment* (`deploy-prod.yml`): PHP and JS lint on push to `main`, then SSH deployment to the server (`git pull --ff-only` + Service Worker version bump, which triggers the update modal for visitors) +- *PR check* (`check-pr.yml`): blocking PHP and JS lint plus PHP and JS unit tests on every pull request to `main` +- *PROD deployment* (`deploy-prod.yml`): PHP and JS lint plus PHP and JS unit tests on push to `main`, then SSH deployment to the server (`git pull --ff-only` + Service Worker version bump, which triggers the update modal for visitors) -AsciDoc, JSON, XML and shellcheck validation are no longer run in CI: they must be run locally with `scripts/check.sh`. +AsciDoc, JSON, XML and shellcheck validation are not run in CI: they must be run locally with `scripts/check.sh`. The full production server setup (clone, instance files, SSH keys, Gitea secrets) is documented in link:DEPLOY.adoc[DEPLOY.adoc].