Skip to content

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:5432

Health 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-token
  • LOG_LEVEL: silent
  • NODE_ENV: test

Etapes

EtapeCommande
Checkoutactions/checkout@v4
Setup Node.js 22actions/setup-node@v4
Install dependenciesnpm ci
Generate Prisma clientnpm run db:generate
Run Prisma migrationsnpx prisma migrate deploy
Typechecknpm run typecheck
Tests with coveragenpm run test:ci
Upload coverage reportactions/upload-artifact@v4
Buildnpm 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: true

Les 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

  1. Checkout
  2. Setup Node.js 22
  3. npm ci
  4. Generate Prisma client
  5. Typecheck
  6. Build
  7. Creation d'une archive .tar.gz contenant :
    • dist/ (code compile)
    • prisma/ (schema et migrations)
    • package.json et package-lock.json
  8. Creation d'une GitHub Release via softprops/action-gh-release@v2 avec 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

  1. Checkout
  2. Setup Node.js 22
  3. npm ci
  4. Build VitePress : npx vitepress build docs
  5. Upload artifact : actions/upload-pages-artifact@v3 (chemin docs/.vitepress/dist)
  6. Deploy vers GitHub Pages : actions/deploy-pages@v4

Permissions

yaml
permissions:
  contents: read
  pages: write
  id-token: write

Concurrence

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.js et @discordjs/*
    • prisma : prisma et @prisma/*
    • vitest : vitest et @vitest/*

GitHub Actions

  • Frequence : hebdomadaire, chaque lundi a 8h00 (Europe/Paris)
  • Met a jour les versions des actions utilisees dans les workflows.