GitHub Actions
Le workflow d'intégration continue de Vantablvck, étape par étape.
Le workflow vit dans .github/workflows/ci.yml. Il définit un seul job, quality, qui exécute toute la chaîne de vérification sur une machine ubuntu-latest.
Déclencheurs
Le workflow se lance sur deux évènements.
| Évènement | Déclenchement |
|---|---|
push | Sur la branche main |
pull_request | Sur toute pull request |
Une clé de concurrence annule les exécutions dépassées : si un nouveau commit arrive pendant qu'une CI tourne encore sur la même référence, l'ancienne est arrêtée. On évite ainsi de gaspiller des minutes de CI sur du code déjà remplacé.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: trueLes étapes
Le job enchaîne les étapes dans un ordre volontaire, du moins cher au plus cher, pour échouer tôt.
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.8
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Lint and format
run: bunx biome ci .
- name: Type check
run: bunx nx run-many -t check-types --exclude=native
- name: Unit tests
run: bun run test
- name: Build
run: bunx nx run-many -t build --exclude=native| Étape | Rôle |
|---|---|
| Checkout | Récupère le code du dépôt |
| Setup Bun | Installe Bun en version 1.3.8, la même que le packageManager du projet |
| Install | Installe les dépendances en respectant le lockfile (--frozen-lockfile) |
| Lint and format | biome ci vérifie le style et le format sans rien modifier |
| Type check | Vérifie les types de tous les projets sauf l'app native |
| Unit tests | Lance les tests via Nx, sur le runner natif de Bun |
| Build | Construit tous les projets sauf l'app native |
Pourquoi l'app native est exclue
L'application Expo est gelée pour le MVP, la priorité va au web et à la PWA. Ses builds sont sensibles en environnement d'intégration continue, et son code ne bouge pas. On l'exclut donc de la vérification de types et du build (--exclude=native) pour garder la CI verte et rapide. Elle sera réintégrée le jour où le natif sortira du gel.
Le lint via biome ci couvre l'ensemble du dépôt, y compris l'app native. Seuls la vérification de types et le build sont restreints, car ce sont eux qui posent problème sur une app Expo gelée.