# Consignes — Folio ## Architecture **Folio** est un moteur de blog PHP. ### Dépôts et rôles | Répertoire local | Rôle | Remote Gitea | |-----------------|------|-------------| | `~/Projects/folio/` | Copie du moteur Folio, branche `dev`. **Tout le développement se fait ici.** | `git.abonnel.fr/cedricAbonnel/folio` | | `~/Projects/varlog/` | Workspace du site varlog (scripts, config). | — | | `~/Projects/varlog-data/` | Articles de varlog.a5l.fr. Sync bidirectionnelle. | `cedricAbonnel/varlog` | | `~/Projects/fr.abonnel.www/` | Workspace du site abonnel.fr (scripts, config). | — | | `~/Projects/fr.abonnel.www-data/` | Articles de www.abonnel.fr. Sync bidirectionnelle. | `cedricAbonnel/abonnel-www` | ### Environnements | Site | Rôle | Mise à jour moteur | Articles | |------|------|--------------------|---------| | varlog.a5l.fr | Test | rsync depuis `~/Projects/folio/` | `varlog-data/` ↔ `varlog:/srv/data/folio` | | www.abonnel.fr | Production | Auto (UpdateChecker vérifie `version.txt` sur Gitea) | `fr.abonnel.www-data/` ↔ `abonnel-wiki:/srv/data/folio` | ### Articles (`DATA_PATH`) Les articles ne sont **jamais** dans le dépôt folio. Ils vivent dans un répertoire séparé, configurable via `DATA_PATH` dans le `.env` de chaque instance. - Serveur varlog : `DATA_PATH=/srv/data/folio` - Serveur abonnel.fr : `DATA_PATH=/srv/data/folio` - En local pour tester : pointer `DATA_PATH` vers `~/Projects/varlog-data/` La sync des articles se fait via git (pas rsync) avec les scripts `pull-data.sh` et `push-data.sh`. --- ## Workflow moteur 1. Travailler sur `dev` dans `~/Projects/folio/` 2. Tester sur varlog.a5l.fr : ```bash ~/Projects/varlog/scripts/sync.sh # puis vérifier sur http://varlog.acegrp.lan (ou varlog.a5l.fr) ``` 3. Quand `dev` est stable : - Bumper `public/version.txt` (semver) - Ajouter une entrée dans `CHANGELOG.md` - Ouvrir une **PR `dev` → `main`** sur Gitea 4. Merger la PR → abonnel.fr se met à jour automatiquement. **Règle absolue : jamais de commit direct sur `main`.** --- ## Mise à jour du moteur (varlog) Le poste local n'a pas de base de données. Tout ce qui touche à la DB ou au contenu s'exécute **sur le serveur varlog** via SSH — les scripts locaux ne font qu'ouvrir une connexion SSH et lancer le PHP distant. **Cycle de développement :** 1. Modifier le code dans `~/Projects/folio/` (local) 2. Déployer et tester : ```bash # Rsync moteur (folio → varlog) + sync articles bidirectionnel ~/Projects/varlog/scripts/sync.sh # puis tester sur http://varlog.acegrp.lan ``` 3. Si des migrations de schéma BDD sont nécessaires : ```bash ~/Projects/varlog/scripts/db-migrate.sh # exécute le PHP sur varlog via SSH ``` 4. Si des migrations de contenu sont nécessaires : ```bash ~/Projects/varlog/scripts/content-migrate.sh # exécute le PHP sur varlog via SSH ``` **Déploiement complet en une commande (lint + rsync + DB + contenu + commit serveur) :** ```bash ~/Projects/varlog/scripts/deploy.sh "message de commit" ``` Chemin serveur : `varlog:/var/www/lan.acegrp.varlog/` --- ## Mise à jour manuelle du moteur (abonnel.fr) À utiliser uniquement si l'UpdateChecker échoue : ```bash cp /var/www/lan.acegrp.abonnel-www/.env /tmp/.env.bak rm -rf /var/www/lan.acegrp.abonnel-www git clone --depth=1 https://cedricAbonnel:TOKEN@git.abonnel.fr/cedricAbonnel/folio.git /var/www/lan.acegrp.abonnel-www cp /tmp/.env.bak /var/www/lan.acegrp.abonnel-www/.env cd /var/www/lan.acegrp.abonnel-www && composer install --no-dev --optimize-autoloader php database/migrate.php git -C /var/www/lan.acegrp.abonnel-www config user.email 'cedric@abonnel.fr' git -C /var/www/lan.acegrp.abonnel-www config user.name 'Cédrix' ``` --- ## Règles à respecter - Ne **jamais** écraser le `.env` serveur (ni scp, ni réécriture). Indiquer les variables à l'utilisateur pour qu'il les saisisse lui-même. - Ne **jamais** versionner `data/`, `.env`, ou `vendor/` dans le dépôt folio. - Toujours bumper la version **et** mettre à jour le changelog dans le même commit que la PR.