ci: add PHP and JS unit tests to workflows
This commit is contained in:
@@ -36,3 +36,9 @@ jobs:
|
|||||||
node --check "$f" || exit 1
|
node --check "$f" || exit 1
|
||||||
done
|
done
|
||||||
echo "JS lint OK"
|
echo "JS lint OK"
|
||||||
|
|
||||||
|
- name: Tests unitaires PHP
|
||||||
|
run: php tests/php/run.php
|
||||||
|
|
||||||
|
- name: Tests unitaires JS
|
||||||
|
run: node tests/js/run.js
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ jobs:
|
|||||||
done
|
done
|
||||||
echo "JS lint OK"
|
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:
|
deploy:
|
||||||
needs: check
|
needs: check
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
+3
-3
@@ -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.
|
. *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.
|
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
|
| Événement | Résultat
|
||||||
|
|
||||||
| Pull request vers `main`
|
| 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`
|
| 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
|
| En local, avant de pousser
|
||||||
| `scripts/check.sh` exécute l'ensemble des vérifications qualité (PHP, JS, AsciiDoc, JSON, XML, shellcheck)
|
| `scripts/check.sh` exécute l'ensemble des vérifications qualité (PHP, JS, AsciiDoc, JSON, XML, shellcheck)
|
||||||
|
|||||||
+6
-6
@@ -937,10 +937,10 @@ Ce script lance : lint PHP (`php -l` sur tous les fichiers, samples inclus), lin
|
|||||||
|
|
||||||
Pipelines Gitea Actions (`.gitea/workflows/`) :
|
Pipelines Gitea Actions (`.gitea/workflows/`) :
|
||||||
|
|
||||||
- *Vérification PR* (`check-pr.yml`) : lint PHP et JS bloquants sur toute pull request vers `main`
|
- *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 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)
|
- *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].
|
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/`):
|
Gitea Actions pipelines (`.gitea/workflows/`):
|
||||||
|
|
||||||
- *PR check* (`check-pr.yml`): blocking PHP and JS lint on every pull request to `main`
|
- *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 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)
|
- *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].
|
The full production server setup (clone, instance files, SSH keys, Gitea secrets) is documented in link:DEPLOY.adoc[DEPLOY.adoc].
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user