# Setup CI/CD — Gitea Actions + Act Runner ## Architecture ``` Serveur A : Gitea (192.168.5.171:3000) Serveur B : Portainer + Docker + 3d-pricing ``` Le runner tourne sur le Serveur B. Il se connecte *vers* Gitea (outbound uniquement). Pas de registry : l'image est buildée et gardée localement sur le Serveur B. --- ## Étape 1 — Activer Gitea Actions (Serveur A) Trouver `app.ini` : ```bash docker exec gitea cat /etc/gitea/app.ini | grep -A5 "\[actions\]" # ou docker exec gitea find / -name app.ini 2>/dev/null ``` Ajouter dans `app.ini` : ```ini [actions] ENABLED = true ``` Redémarrer Gitea : ```bash docker restart gitea ``` --- ## Étape 2 — Récupérer le token runner (Serveur A, interface web) Gitea → Site Administration → Actions → Runners → Create new Runner Copier le **Registration Token**. --- ## Étape 3 — Déployer le runner (Serveur B) ```bash # Créer le dossier mkdir -p /opt/gitea-act-runner cd /opt/gitea-act-runner # Copier le docker-compose.yml (celui de ce dossier) cp /chemin/vers/act-runner/docker-compose.yml . # Créer le fichier .env avec le token echo "RUNNER_TOKEN=COLLER_LE_TOKEN_ICI" > .env # Démarrer docker compose up -d # Vérifier que le runner s'est bien enregistré docker logs -f gitea-act-runner # Tu dois voir : "Runner registered successfully" ``` --- ## Étape 4 — Migrer les données existantes (une seule fois) Si tu avais déjà un `./data/pricing.db` sur le serveur : ```bash mkdir -p /opt/3d-pricing-data cp /chemin/ancien/data/pricing.db /opt/3d-pricing-data/ ``` > Le workflow déploie avec `-v /opt/3d-pricing-data:/data` — c'est le dossier permanent de la BDD. --- ## Étape 5 — Activer Actions sur le repo Dans Gitea → ton repo → Settings → General → activer "Actions" --- ## Étape 6 — Push et tester ```bash cd /mnt/c/Users/jbper/Claude/3d-pricing git add -A git commit -m "ci: add Gitea Actions deploy workflow" git push ``` Surveiller dans Gitea → ton repo → Actions — le job doit passer en vert. --- ## Troubleshooting **Runner ne s'enregistre pas** ```bash docker logs gitea-act-runner # Vérifier que 192.168.5.171:3000 est joignable depuis le Serveur B ping 192.168.5.171 curl http://192.168.5.171:3000/api/v1/version ``` **`docker: command not found` dans le workflow** Le binaire docker du host doit être accessible dans le runner. Vérifier le volume dans docker-compose.yml : ```yaml - /usr/local/bin/docker:/usr/local/bin/docker:ro ``` Adapter le chemin si docker est ailleurs (`which docker` sur le host). **Healthcheck échoue** ```bash docker logs 3d-pricing ``` **Workflow ne se déclenche pas** - Vérifier que Actions est activé sur le repo (Settings → General) - Vérifier que `[actions] ENABLED = true` est dans app.ini et que Gitea a redémarré - Vérifier que le runner apparaît dans Site Admin → Actions → Runners (statut "Online")