CI/CD
Workflow CI (ci.yml)
Declenche sur push et pull requests vers main et develop.
Sidecar PostgreSQL
Un service PostgreSQL 16 Alpine est demarre comme sidecar :
yaml
services:
postgres:
image: postgres:16-alpine
env:
POSTGRES_USER: igb
POSTGRES_PASSWORD: igb
POSTGRES_DB: igb_test
ports:
- 5432:5432Health check integre avec pg_isready (10s interval, 5 retries).
Variables d'environnement
Le job utilise des valeurs factices pour les variables Discord et Riot :
DISCORD_TOKEN: test-tokenLOG_LEVEL: silentNODE_ENV: test
Etapes
| Etape | Commande |
|---|---|
| Checkout | actions/checkout@v4 |
| Setup Node.js 22 | actions/setup-node@v4 |
| Install dependencies | npm ci |
| Generate Prisma client | npm run db:generate |
| Run Prisma migrations | npx prisma migrate deploy |
| Typecheck | npm run typecheck |
| Tests with coverage | npm run test:ci |
| Upload coverage report | actions/upload-artifact@v4 |
| Build | npm run build |
Le rapport de couverture est uploade comme artefact avec 7 jours de retention.
Concurrence
yaml
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueLes jobs en cours sont annules si un nouveau push arrive sur la meme branche.
Workflow Release (release.yml)
Declenche sur push d'un tag v*.*.*.
Etapes
- Checkout
- Setup Node.js 22
npm ci- Generate Prisma client
- Typecheck
- Build
- Creation d'une archive
.tar.gzcontenant :dist/(code compile)prisma/(schema et migrations)package.jsonetpackage-lock.json
- Creation d'une GitHub Release via
softprops/action-gh-release@v2avec l'archive et les release notes generees automatiquement.
Workflow Docs (docs.yml)
Declenche sur push vers main uniquement si des fichiers dans docs/ sont modifies.
Etapes
- Checkout
- Setup Node.js 22
npm ci- Build VitePress :
npx vitepress build docs - Upload artifact :
actions/upload-pages-artifact@v3(chemindocs/.vitepress/dist) - Deploy vers GitHub Pages :
actions/deploy-pages@v4
Permissions
yaml
permissions:
contents: read
pages: write
id-token: writeConcurrence
Groupe pages avec annulation en cours pour eviter les deploiements concurrents.
Dependabot
Configure dans .github/dependabot.yml :
npm
- Frequence : hebdomadaire, chaque lundi a 8h00 (Europe/Paris)
- Limite : 10 PRs ouvertes simultanement
- Groupes :
discord:discord.jset@discordjs/*prisma:prismaet@prisma/*vitest:vitestet@vitest/*
GitHub Actions
- Frequence : hebdomadaire, chaque lundi a 8h00 (Europe/Paris)
- Met a jour les versions des actions utilisees dans les workflows.
