Compare commits
1 Commits
eabd2f5f29
...
docs/ops-m
| Author | SHA1 | Date | |
|---|---|---|---|
| cd4ce80ac1 |
@@ -72,7 +72,8 @@ Ce document décrit la synchronisation **sans ambiguïté** entre :
|
|||||||
### Étape B — NAS : aligner `current` sur `origin/main`
|
### Étape B — NAS : aligner `current` sur `origin/main`
|
||||||
Sur NAS, git n’est pas forcément installé : on utilise un conteneur git.
|
Sur NAS, git n’est pas forcément installé : on utilise un conteneur git.
|
||||||
|
|
||||||
```sh
|
en sh:
|
||||||
|
|
||||||
APP="/volume2/docker/archicratie-web/current"
|
APP="/volume2/docker/archicratie-web/current"
|
||||||
U_ID="$(id -u)"; G_ID="$(id -g)"
|
U_ID="$(id -u)"; G_ID="$(id -g)"
|
||||||
|
|
||||||
@@ -89,3 +90,34 @@ git checkout -B main
|
|||||||
git reset --hard origin/main
|
git reset --hard origin/main
|
||||||
git status -sb
|
git status -sb
|
||||||
'
|
'
|
||||||
|
|
||||||
|
### Étape C — NAS : rebuild du slot inactif + smoke + bascule
|
||||||
|
|
||||||
|
Rebuild de l’image (slot inactif recommandé).
|
||||||
|
|
||||||
|
docker compose up -d --force-recreate --no-build web_green (ou blue)
|
||||||
|
|
||||||
|
smoke test via script ou curl
|
||||||
|
|
||||||
|
bascule DSM vers le port du slot actif
|
||||||
|
|
||||||
|
## 4) Checkpoints rapides (sanity)
|
||||||
|
### 4.1 Vérifier que NAS = origin/main
|
||||||
|
|
||||||
|
git rev-parse --short HEAD sur NAS (via alpine/git)
|
||||||
|
|
||||||
|
doit égaler origin/main.
|
||||||
|
|
||||||
|
### 4.2 Vérifier “Proposer” (points minimum)
|
||||||
|
|
||||||
|
PUBLIC_GITEA_OWNER=Archicratia (casse sensible)
|
||||||
|
|
||||||
|
PUBLIC_GITEA_REPO=archicratie-edition
|
||||||
|
|
||||||
|
Flow : Proposer → choix 1 → choix 2 → onglet Gitea /issues/new?... OK
|
||||||
|
|
||||||
|
## 5) Rollback
|
||||||
|
|
||||||
|
DSM reverse proxy : repasser sur l’autre port (8081/8082).
|
||||||
|
|
||||||
|
En cas de code cassé : réaligner NAS sur origin/main précédent (tag/release) ou repointer /current vers une release précédente.
|
||||||
@@ -53,6 +53,160 @@ Chercher `window.open` dans la page générée :
|
|||||||
- la commande doit retourner 0 lignes.
|
- la commande doit retourner 0 lignes.
|
||||||
|
|
||||||
Sur NAS :
|
Sur NAS :
|
||||||
```sh
|
en sh :
|
||||||
|
|
||||||
curl -fsS http://127.0.0.1:8082/archicratie/archicrat-ia/chapitre-4/ > /tmp/page.html
|
curl -fsS http://127.0.0.1:8082/archicratie/archicrat-ia/chapitre-4/ > /tmp/page.html
|
||||||
grep -n "window.open" /tmp/page.html | head
|
grep -n "window.open" /tmp/page.html | head
|
||||||
|
|
||||||
|
# Fix
|
||||||
|
|
||||||
|
garder un seul mécanisme d’ouverture
|
||||||
|
|
||||||
|
sur click : preventDefault() + stopImmediatePropagation()
|
||||||
|
|
||||||
|
## 3) Favicon 504 / erreurs console sur favicon
|
||||||
|
# Symptôme
|
||||||
|
|
||||||
|
Console navigateur : GET /favicon.ico 504
|
||||||
|
|
||||||
|
# Cause fréquente
|
||||||
|
|
||||||
|
Cache du navigateur (ancienne erreur conservée).
|
||||||
|
|
||||||
|
# Diagnostic
|
||||||
|
|
||||||
|
Comparer :
|
||||||
|
|
||||||
|
curl -I http://127.0.0.1:8082/favicon.ico
|
||||||
|
|
||||||
|
curl -kI https://<domaine>/favicon.ico
|
||||||
|
|
||||||
|
Si curl = 200 et navigateur = 504 → cache.
|
||||||
|
|
||||||
|
# Fix
|
||||||
|
|
||||||
|
Désactiver cache dans l’onglet Réseau (devtools)
|
||||||
|
|
||||||
|
hard refresh
|
||||||
|
|
||||||
|
vérifier droits fichiers dans dist/
|
||||||
|
|
||||||
|
## 4) Sur NAS : git: command not found
|
||||||
|
# Symptôme
|
||||||
|
|
||||||
|
git fetch impossible sur le NAS.
|
||||||
|
|
||||||
|
# Cause
|
||||||
|
|
||||||
|
Git non installé sur DSM shell.
|
||||||
|
|
||||||
|
# Fix standard (recommandé)
|
||||||
|
Utiliser 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 status -sb
|
||||||
|
'
|
||||||
|
|
||||||
|
## 5) Git : “dubious ownership in repository”
|
||||||
|
# Symptôme
|
||||||
|
|
||||||
|
fatal: detected dubious ownership
|
||||||
|
|
||||||
|
# Fix
|
||||||
|
|
||||||
|
Dans le conteneur git (ou machine locale) :
|
||||||
|
git config --global --add safe.directory /repo
|
||||||
|
|
||||||
|
## 6) Git : non-fast-forward au push
|
||||||
|
# Symptôme
|
||||||
|
|
||||||
|
rejected (non-fast-forward)
|
||||||
|
|
||||||
|
# Cause
|
||||||
|
|
||||||
|
Ta branche locale est en retard vs remote.
|
||||||
|
|
||||||
|
# Fix
|
||||||
|
|
||||||
|
En général :
|
||||||
|
|
||||||
|
on fait une PR depuis une branche
|
||||||
|
|
||||||
|
ou on rebase/merge origin/main avant push
|
||||||
|
|
||||||
|
Sur une branche de travail :
|
||||||
|
git fetch origin
|
||||||
|
git rebase origin/main
|
||||||
|
# ou
|
||||||
|
git merge origin/main
|
||||||
|
|
||||||
|
## 7) Gitea : “Not allowed to push to protected branch main”
|
||||||
|
# Symptôme
|
||||||
|
|
||||||
|
pre-receive hook declined
|
||||||
|
|
||||||
|
# Cause
|
||||||
|
|
||||||
|
Protection de branche (normal/attendu).
|
||||||
|
|
||||||
|
# Fix
|
||||||
|
|
||||||
|
Push sur une branche
|
||||||
|
|
||||||
|
Ouvrir PR
|
||||||
|
|
||||||
|
Merger via UI Gitea
|
||||||
|
|
||||||
|
## 8) Docker build : BuildKit / buildx / API version
|
||||||
|
# Symptômes typiques
|
||||||
|
|
||||||
|
the --network option requires BuildKit
|
||||||
|
|
||||||
|
BuildKit is enabled but the buildx component is missing
|
||||||
|
|
||||||
|
client version ... too new. Maximum supported API version ...
|
||||||
|
|
||||||
|
Fix “robuste” (principe)
|
||||||
|
|
||||||
|
# installer buildx si nécessaire
|
||||||
|
|
||||||
|
si DSM/docker API ancienne : définir DOCKER_API_VERSION=<compatible> (selon ton environnement)
|
||||||
|
|
||||||
|
garder le build en --network host si nécessaire
|
||||||
|
|
||||||
|
## 9) Container Manager / Docker : “database is locked” (logging driver db)
|
||||||
|
# Symptôme
|
||||||
|
|
||||||
|
failed to initialize logging driver : database is locked
|
||||||
|
|
||||||
|
# Cause
|
||||||
|
|
||||||
|
Le driver de logs Docker est db (Synology) et sa DB est verrouillée.
|
||||||
|
|
||||||
|
# Fix rapide
|
||||||
|
|
||||||
|
Redémarrer “Container Manager” depuis le centre de paquets DSM.
|
||||||
|
|
||||||
|
Vérifier que le conteneur redémarre ensuite.
|
||||||
|
|
||||||
|
## 10) Checklist “tout marche”
|
||||||
|
|
||||||
|
curl -I http://127.0.0.1:8082/ => 200
|
||||||
|
|
||||||
|
curl -kI https://<domaine>/ => 200
|
||||||
|
|
||||||
|
PUBLIC_GITEA_* corrects
|
||||||
|
|
||||||
|
“Proposer” : 1 onglet, pas de 404, issue pré-remplie
|
||||||
|
|
||||||
|
CI passe sur PR merge
|
||||||
Reference in New Issue
Block a user