ci: add Gitea Actions deploy workflow
Build & Deploy / deploy (push) Failing after 19s

This commit is contained in:
Jo
2026-07-06 19:26:00 +02:00
parent 244e4895b4
commit eb6da4c270
3 changed files with 170 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
name: Build & Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build image
run: docker build -t 3d-pricing:latest .
- name: Redeploy
run: |
docker rm -f 3d-pricing 2>/dev/null || true
docker run -d \
--name 3d-pricing \
--restart unless-stopped \
-p 5010:5000 \
-v /opt/3d-pricing-data:/data \
-e DATABASE_PATH=/data/pricing.db \
3d-pricing:latest
- name: Healthcheck
run: |
sleep 5
curl -f http://localhost:5010/ || (echo "App not responding!" && exit 1)
+124
View File
@@ -0,0 +1,124 @@
# 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")
+15
View File
@@ -0,0 +1,15 @@
services:
runner:
image: gitea/act_runner:latest
container_name: gitea-act-runner
restart: unless-stopped
environment:
- GITEA_INSTANCE_URL=http://192.168.5.171:3000
- GITEA_RUNNER_REGISTRATION_TOKEN=${RUNNER_TOKEN}
- GITEA_RUNNER_NAME=portainer-server
- GITEA_RUNNER_LABELS=self-hosted,linux,docker
volumes:
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
# Le runner a besoin de docker compose v2
- /usr/local/bin/docker:/usr/local/bin/docker:ro