Files
archicratie-edition/docs/OPS-SYNC-TRIPLE-SOURCE.md
Archicratia 8b7cfdfd48
All checks were successful
CI / build-and-anchors (push) Successful in 1m45s
SMOKE / smoke (push) Successful in 17s
docs(ops): add triple-source sync + troubleshooting + proposer spec
2026-02-01 14:30:18 +01:00

2.6 KiB
Raw Blame History

OPS-SYNC-TRIPLE-SOURCE — Mac Studio / Gitea / NAS (prod)

Dernière mise à jour : 2026-02-01

Ce document décrit la synchronisation sans ambiguïté entre :

  • Local (Mac Studio) : édition / écriture / préparation PR
  • Gitea : vérité canonique (branche main)
  • NAS Synology DS220+ : déploiement (blue/green) à partir de main

0) Invariants (à ne jamais violer)

  1. Gitea main = source de vérité.
  2. Le NAS ne doit pas “inventer” du code : pas dédition manuelle non versionnée en prod (sauf hotfix temporaire immédiatement reporté dans une PR).
  3. Le bouton “Proposer” dépend de PUBLIC_GITEA_* : une valeur fausse → 404 / redirect login / mauvais repo.
  4. Les secrets (tokens) ne doivent jamais entrer dans le repo : .env* ignorés, token injecté uniquement via variable denvironnement locale/CI.

1) Topologie réelle (ce que nous avons)

1.1 Local (Mac Studio)

  • Dev et documentation.
  • Git complet.
  • On fait : branches, commits, push, PR, merge.

1.2 Gitea

  • Repo canonique : Archicratia/archicratie-edition.
  • main = défaut + protégée.
  • Toute modif arrive via PR.

1.3 NAS (prod)

  • Chemin canonique :
    • /volume2/docker/archicratie-web/releases/<timestamp>/app
    • /volume2/docker/archicratie-web/current → symlink vers la release active
  • Blue/Green :
    • web_blue sur 127.0.0.1:8081
    • web_green sur 127.0.0.1:8082
  • Reverse proxy DSM : bascule 8081 ↔ 8082.

2) Règle dor : qui écrit quoi, où ?

2.1 Toute écriture “source” se fait sur Mac Studio

  • Code Astro
  • Scripts
  • Docs docs/*.md
  • .gitignore

2.2 Gitea ne reçoit que via PR

  • Push sur branche feature/docs
  • PR → CI → merge

2.3 NAS ne fait que :

  • git reset --hard origin/main (alignement)
  • build image + restart slot blue/green
  • smoke test
  • bascule reverse proxy DSM

3) Procédure standard (la seule à utiliser)

Étape A — Mac Studio → Gitea (PR)

  1. git checkout -b feat/... ou docs/...
  2. commits propres et atomiques
  3. git push -u origin <branch>
  4. PR dans Gitea → CI OK → merge dans main

Étape B — NAS : aligner current sur origin/main

Sur NAS, git nest pas forcément installé : on utilise un conteneur git.

APP="/volume2/docker/archicratie-web/current"
U_ID="$(id -u)"; G_ID="$(id -g)"

sudo docker run --rm --network host \
  -u "$U_ID:$G_ID" -e HOME=/tmp \
  -v "$APP":/repo -w /repo \
  --entrypoint sh alpine/git -lc '
set -eu
git config --global --add safe.directory /repo
git config http.sslVerify false

git fetch origin --prune
git checkout -B main
git reset --hard origin/main
git status -sb
'