From 10d3991633d2743c73f6aa7c9ba9de5ac1137b8c Mon Sep 17 00:00:00 2001 From: bolbol Date: Wed, 8 Jul 2026 09:32:31 +0000 Subject: [PATCH] docs: fallback API HTTP Gitea sans git (mcp-nas) --- common/git-push-depuis-mcp-nas.md | 43 +++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/common/git-push-depuis-mcp-nas.md b/common/git-push-depuis-mcp-nas.md index fda09f4..61018fe 100644 --- a/common/git-push-depuis-mcp-nas.md +++ b/common/git-push-depuis-mcp-nas.md @@ -1,13 +1,13 @@ # GIT PUSH depuis le container mcp-nas -**Date** : 2026-06-15 +**Date** : 2026-06-15 (mise à jour 2026-07-08) **Contexte** : git push Gitea depuis mcp-nas (container Docker sur NAS DS920+) ## Problème `git push http://bolbol:PASSWORD@192.168.100.33:3232/...` → **timeout systématique** L'IP 192.168.100.33 est inaccessible depuis l'intérieur du container mcp-nas. -## Solution validée +## Solution validée (si le binaire git est présent dans le container) Utiliser **172.17.0.1** (gateway Docker bridge) à la place : ```bash @@ -34,3 +34,42 @@ curl -s --max-time 8 http://172.17.0.1:3232/api/v1/repos/bolbol/ \ ## Ce qui NE fonctionne PAS - `192.168.100.33` depuis mcp-nas : timeout sur tous les ports - `git push` sans `GIT_TERMINAL_PROMPT=0` peut bloquer en attente de saisie + +--- + +## FALLBACK sans git (ajouté 2026-07-08) + +**Constat** : certains containers mcp-nas n'ont pas le binaire `git` installé (`git: command not found`). Plutôt que d'installer le paquet, utiliser l'**API HTTP Gitea directement** — plus léger, zéro dépendance, un seul appel curl. + +### Créer un nouveau fichier +```bash +CONTENT_B64=$(base64 -w0 chemin/local/fichier.md) +curl -s -X POST "http://172.17.0.1:3232/api/v1/repos/bolbol//contents/.md" \ + -H "Authorization: token " \ + -H "Content-Type: application/json" \ + -d "{\"message\":\"\",\"content\":\"${CONTENT_B64}\",\"branch\":\"main\"}" +``` + +### Mettre à jour un fichier existant (SHA requis) +```bash +# 1. Récupérer le sha courant +SHA=$(curl -s "http://172.17.0.1:3232/api/v1/repos/bolbol//contents/.md" \ + -H "Authorization: token " | python3 -c "import json,sys; print(json.load(sys.stdin)['sha'])") + +# 2. Push avec le sha +CONTENT_B64=$(base64 -w0 chemin/local/fichier.md) +curl -s -X PUT "http://172.17.0.1:3232/api/v1/repos/bolbol//contents/.md" \ + -H "Authorization: token " \ + -H "Content-Type: application/json" \ + -d "{\"message\":\"\",\"content\":\"${CONTENT_B64}\",\"sha\":\"${SHA}\",\"branch\":\"main\"}" +``` + +### Tokens par sphère +Dans `/volume1/docker/hermes-platform/.env` : `GITEA_TOKEN_TT`, `GITEA_TOKEN_NYORA`, `GITEA_TOKEN_PERSO`. Utiliser le token correspondant à la sphère du repo modifié. + +### Quand l'utiliser +- **Oui** : push ponctuel d'un seul fichier (runbook, note, config simple), git absent, ou pour éviter d'installer un paquet pour une seule opération. +- **Non** : commits multi-fichiers, historique de merge complexe, besoin de `git log`/`git diff` local → rester sur git classique si le binaire est disponible. + +### Gain +Aucune installation de paquet, un seul appel réseau, fonctionne identiquement pour les 3 sphères (Nyora/TT/Perso) en changeant simplement le token.