Pipeline CI/CD (Gitea)
Pipeline CI/CD (Gitea)
Dernière mise à jour : 2026-05-10
Workflow .gitea/workflows/build.yml
87 lignes. Trigger : push sur main.
Job test
- Runner :
ubuntu-latest - Container :
node:22-bookworm-slim - Pourquoi container custom : Alpine (musl libc) ne supporte pas les prebuilts Node fournis par
actions/setup-node(glibc).better-sqlite3n'a pas de prebuilt musl. → Debian Slim + Node 22 + tous les prebuilts.
Étapes
- Checkout code
- Backend : npm ci → npm run build (tsc) → npm test (vitest --passWithNoTests)
- Frontend : npm ci → npm run build (vue-tsc + vite) → npm test
Si l'un des steps fail, le job suivant (build) ne tourne pas.
Job build (depends: test)
- Runner :
ubuntu-latest
Étapes
- Setup Docker Buildx
- Login registry:
server: vars.REGISTRY_URL # gitea.thymon.fr
username: secrets.REGISTRY_USER
password: secrets.REGISTRY_PASSWORD
- Metadata: tags `latest` + short SHA (`docker/metadata-action`)
- Build & push:
- context: .
- file: ./Dockerfile (multi-stage)
- push: true
- tags: gitea.thymon.fr/thymon/boardgame-referee:latest + :sha-XXXXXXX
- cache-from / cache-to: type=registry (réutilise les couches précédentes)
Tags d'image
latest: dernier commit sur main (utilisé en prod pour pull auto)sha-<7chars>: tag immuable par commit (utilisé pour rollback)
Variables Gitea
Vars (pas secret)
REGISTRY_URL=gitea.thymon.fr
Secrets
REGISTRY_USER= compte Gitea avec write sur le package registryREGISTRY_PASSWORD= token Gitea ou password
Configurés dans Gitea UI : Repo → Settings → Secrets → Actions secrets.
Local : reproduire le build CI
# Backend
npm ci
npm run build
npm test
# Frontend
cd frontend
npm ci
npm run build
npm test
Si tout passe en local mais foire en CI, c'est probablement un souci d'environnement (Node version, Alpine vs Debian, etc.). Toujours utiliser Node 22 en local.
Déclencheur manuel
Pas configuré actuellement (workflow_dispatch absent). Pour relancer un build sans push :
- Soit faire un commit vide :
git commit --allow-empty -m "chore: rebuild" - Soit re-run le job depuis l'UI Gitea (Actions → workflow run → Re-run jobs)
Latence typique
- Job
test: ~3-5 min (npm ci + tsc + vitest) - Job
build: ~5-10 min (Docker multi-stage build + push)
Total : ~10-15 min par push sur main.
Pas d'environnement de staging
Push direct sur main → image latest → tu pulls sur Unraid. Pas de branche develop, pas de staging URL.
Si tu veux ajouter un staging :
- Créer une branche
staging - Étendre
build.ymlavec un triggerpush: branches: [main, staging] - Tag différencié :
staging-latestvslatest - Container Unraid
boardgame-referee-stagingséparé
No comments to display
No comments to display