feat: add Gitea Actions CI/CD, local checks and deploy guide

This commit is contained in:
2026-07-24 20:19:02 +04:00
parent 7e8f078b60
commit 681683c059
5 changed files with 567 additions and 0 deletions
+46
View File
@@ -151,6 +151,8 @@ Toutes ces sources sont modifiables dans `includes/config.local.php` (voir <<fr-
[source]
----
├── .gitea/
│ └── workflows/ # CI/CD Gitea Actions (check-pr, deploy-prod)
├── ajax/
│ └── load-more-videos.php # Endpoint AJAX « Voir plus » (CSRF + Origin)
├── conf/
@@ -194,6 +196,8 @@ Toutes ces sources sont modifiables dans `includes/config.local.php` (voir <<fr-
│ ├── mastodon-timeline.umd.js # mastodon-embed-timeline v4.7.0 (vendored)
│ ├── pleroma-adapter.js # Adaptateur Pleroma → API Mastodon
│ └── pwa-update.js # Enregistrement SW + modal de mise à jour
├── scripts/
│ └── check.sh # Vérifications du CI en local (avant push)
├── uploads/ # Images d'annonces (non versionné, hors .gitkeep)
├── index.php # Page d'accueil (agrégateur)
├── video.php # Page de lecture d'une vidéo
@@ -209,6 +213,7 @@ Toutes ces sources sont modifiables dans `includes/config.local.php` (voir <<fr-
├── mentions-legales.php.sample # Exemple de mentions légales
├── dons.php.sample # Exemple de page de dons
├── LICENSE # GNU AGPL v3
├── DEPLOY.adoc # Guide de déploiement serveur + CI/CD
└── README.adoc
----
@@ -901,6 +906,24 @@ Prérequis : `asciidoctor`, `chromium` (rendu headless) et le paquet `fonts-noto
NOTE: `asciidoctor-pdf` (utilisé par l'extension AsciiDoc de VSCodium) n'est pas utilisable ici : son moteur Prawn ne sait pas embarquer les polices emoji couleur (CBDT/COLR), les émojis disparaissent du PDF. Chromium les gère nativement.
==== ✅ Vérifications locales et CI/CD
Avant de pousser, exécutez les mêmes vérifications que le CI :
[source,bash]
----
scripts/check.sh
----
Ce script lance : lint PHP (`php -l` sur tous les fichiers, samples inclus), lint JS (`node --check`), rendu AsciiDoc, validation JSON (`site.webmanifest.sample`) et XML (`sitemap.xml.sample`, `browserconfig.xml`), shellcheck. Un outil manquant est signalé et le check correspondant ignoré ; le CI, lui, exécute tout.
Pipelines Gitea Actions (`.gitea/workflows/`) :
- *Vérification PR* (`check-pr.yml`) : sur toute pull request vers `main`
- *Déploiement PROD* (`deploy-prod.yml`) : sur push sur `main` — mêmes vérifications, 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)
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].
=== 📜 Licence
Copyright (C) 2025 Cédric Famibelle-Pronzola & *ORGANISATION KA INTERNATIONALE*
@@ -1055,6 +1078,8 @@ All of these sources can be changed in `includes/config.local.php` (see <<en-con
[source]
----
├── .gitea/
│ └── workflows/ # Gitea Actions CI/CD (check-pr, deploy-prod)
├── ajax/
│ └── load-more-videos.php # "Load more" AJAX endpoint (CSRF + Origin)
├── conf/
@@ -1098,6 +1123,8 @@ All of these sources can be changed in `includes/config.local.php` (see <<en-con
│ ├── mastodon-timeline.umd.js # mastodon-embed-timeline v4.7.0 (vendored)
│ ├── pleroma-adapter.js # Pleroma → Mastodon API adapter
│ └── pwa-update.js # SW registration + update modal
├── scripts/
│ └── check.sh # CI checks run locally (before pushing)
├── uploads/ # Announcement images (not versioned, except .gitkeep)
├── index.php # Homepage (aggregator)
├── video.php # Video playback page
@@ -1113,6 +1140,7 @@ All of these sources can be changed in `includes/config.local.php` (see <<en-con
├── mentions-legales.php.sample # Legal notice sample
├── dons.php.sample # Donation page sample
├── LICENSE # GNU AGPL v3
├── DEPLOY.adoc # Server deployment + CI/CD guide
└── README.adoc
----
@@ -1805,6 +1833,24 @@ Requirements: `asciidoctor`, `chromium` (headless rendering) and the `fonts-noto
NOTE: `asciidoctor-pdf` (used by VSCodium's AsciiDoc extension) cannot be used here: its Prawn engine cannot embed color-emoji fonts (CBDT/COLR), so emoji disappear from the PDF. Chromium handles them natively.
==== ✅ Local checks and CI/CD
Before pushing, run the same checks as the CI:
[source,bash]
----
scripts/check.sh
----
This script runs: PHP lint (`php -l` on every file, samples included), JS lint (`node --check`), AsciiDoc rendering, JSON (`site.webmanifest.sample`) and XML (`sitemap.xml.sample`, `browserconfig.xml`) validation, shellcheck. A missing tool is reported and its check skipped; the CI runs everything.
Gitea Actions pipelines (`.gitea/workflows/`):
- *PR check* (`check-pr.yml`): on every pull request to `main`
- *PROD deployment* (`deploy-prod.yml`): on push to `main` — same checks, then SSH deployment to the server (`git pull --ff-only` + Service Worker version bump, which triggers the update modal for visitors)
The full production server setup (clone, instance files, SSH keys, Gitea secrets) is documented in link:DEPLOY.adoc[DEPLOY.adoc].
=== 📜 License
Copyright (C) 2025 Cédric Famibelle-Pronzola & *ORGANISATION KA INTERNATIONALE*