Files
archicratie-edition/docs/OPS-RUNBOOK-ARCHICRATIE-WEB.md
Archicratia 2f296f4fe4
All checks were successful
CI / build-and-anchors (push) Successful in 2m26s
SMOKE / smoke (push) Successful in 17s
docs(runbook): add archicratie-web operations runbook
2026-02-01 13:31:57 +01:00

70 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OPS Runbook — Archicratie Web (NAS Synology DS220 + Gitea)
## 0. Objectif
Ce document décrit la procédure **exacte** pour :
- maintenir un état cohérent entre **Local (Mac Studio)**, **Gitea**, **NAS (prod)** ;
- déployer proprement une release Docker (build, smoke, bascule) ;
- éviter les régressions (branches protégées, CI bloquante, rollback).
## 1. Invariants (à ne jamais violer)
1) **La branche `main` sur Gitea = vérité canonique.**
2) La prod NAS doit être **rebuild** depuis `main` (pas de modifications “à la main” non versionnées).
3) Les variables `PUBLIC_GITEA_*` doivent pointer vers **le bon owner/repo** (sinon 404 / login loop).
4) En solo : PR requise OK, mais **0 approval** (sinon blocage). CI doit rester bloquante.
5) Interdiction : token/secret commité dans le repo.
## 2. Topologie (NAS)
- Arborescence :
- `/volume2/docker/archicratie-web/releases/<timestamp>/app`
- `/volume2/docker/archicratie-web/current` (symlink vers release active)
- Services :
- `web_green` → port local typique `127.0.0.1:8082` (smoke)
- (optionnel) `web_blue``127.0.0.1:8081` (ancienne)
- Script :
- `/volume2/docker/archicratie-web/ops/smoke.sh <port>`
## 3. Standard Git (Gitea)
### 3.1 Branches
- `main` : branche de travail et de déploiement (par défaut)
- `master` : branche legacy (archivée / conservée pour compat si nécessaire)
- Stratégie : `master` est soit supprimée, soit alignée sur `main`, mais **pas** utilisée comme axe actif.
### 3.2 Protection branches (solo recommandé)
- `main` :
- ✅ Exiger PR (Require pull request)
- ✅ 0 approval (solo)
- ✅ Bloquer merge si CI KO (Prevent merge if checks fail)
- ✅ Désactiver force-push
- (optionnel) désactiver push direct (selon UI Gitea)
- `master` :
- ✅ Interdire push direct
- ✅ Désactiver force-push
- ✅ Mention “legacy” (si UI le permet)
## 4. Variables denvironnement (cause n°1 des 404)
### 4.1 Variables publiques injectées au build
- `PUBLIC_GITEA_BASE=https://gitea.archicratie.trans-hands.synology.me`
- `PUBLIC_GITEA_OWNER=Archicratia`
- `PUBLIC_GITEA_REPO=archicratie-edition`
### 4.2 Règle dor
- Le site génère des liens `.../<OWNER>/<REPO>/issues/new?...`
- Si OWNER/REPO est faux (ex: `archicratia/archicratie-web`) :
- `/issues` peut marcher
- MAIS `/issues/new` finit en 404 / redirect login / droits
- => corriger `.env` et rebuild
## 5. Déploiement NAS (procédure protocolaire)
### 5.1 Pré-check
Sur NAS :
- Vérifier quon est bien dans `/volume2/docker/archicratie-web/current`
- Charger `.env` (pour build args)
Commandes :
```sh
cd /volume2/docker/archicratie-web/current || exit 1
set -a
. ./.env
set +a
grep -nE '^PUBLIC_GITEA_(BASE|OWNER|REPO)=' .env