infra: add PR validation CI workflow (cargo check/test + npm build) #60

Closed
opened 2026-04-09 13:15:26 +00:00 by maximus · 0 comments
Owner

Contexte

Identifié pendant le sprint spec-monetisation : la CI Forgejo (release.yml) ne tourne que sur les tags v*, donc aucune validation Rust ou TypeScript n'est exécutée avant un merge en main. Les erreurs de compilation Rust ne sont attrapées qu'au moment de la release, ce qui est trop tard.

PR #56 (license commands) en est l'illustration : l'auteur n'a pas pu valider localement (pas de toolchain Rust sur la machine de dev) et la CI ne couvre pas les PRs.

Objectif

Ajouter un workflow check.yml qui tourne sur chaque push de branche et chaque PR, pour bloquer les régressions avant merge.

Tâches

  • Créer .forgejo/workflows/check.yml (et son miroir .github/workflows/check.yml si applicable) qui s'exécute sur :
    • push sur toutes les branches sauf main
    • pull_request vers main
  • Étapes du workflow :
    • Setup Rust toolchain (rustup)
    • Setup Node.js 20
    • cargo check --manifest-path src-tauri/Cargo.toml --all-targets
    • cargo test --manifest-path src-tauri/Cargo.toml
    • npm ci
    • npm run build (vite build, valide le TS et la compilation frontend)
    • Optionnel : npx tsc --noEmit pour un check TS strict si le build ne le couvre pas déjà
  • Optionnel : ajouter cargo clippy --all-targets -- -D warnings pour catch les anti-patterns
  • Cache des dépendances (cargo registry + target/, node_modules) pour garder le workflow rapide (~2-5 min cible)
  • Vérifier que le workflow tourne bien sur PR #56 ou un PR de test

Critères d'acceptation

  • Un push de branche déclenche le workflow
  • Une erreur Rust (ex: variable non déclarée) fait échouer le workflow
  • Une erreur TypeScript fait échouer le workflow
  • Le workflow réussit sur la branche main actuelle
  • Documenté dans le README ou CLAUDE.md (mention de la CI sur PRs)

Impact

Débloque la validation automatique pour tous les futurs sprints, et particulièrement le reste de spec-monetisation (issues #51, #53 qui touchent du Rust).

## Contexte Identifié pendant le sprint spec-monetisation : la CI Forgejo (`release.yml`) ne tourne que sur les tags `v*`, donc aucune validation Rust ou TypeScript n'est exécutée avant un merge en main. Les erreurs de compilation Rust ne sont attrapées qu'au moment de la release, ce qui est trop tard. PR #56 (license commands) en est l'illustration : l'auteur n'a pas pu valider localement (pas de toolchain Rust sur la machine de dev) et la CI ne couvre pas les PRs. ## Objectif Ajouter un workflow `check.yml` qui tourne sur chaque push de branche et chaque PR, pour bloquer les régressions avant merge. ## Tâches - [ ] Créer `.forgejo/workflows/check.yml` (et son miroir `.github/workflows/check.yml` si applicable) qui s'exécute sur : - `push` sur toutes les branches sauf `main` - `pull_request` vers `main` - [ ] Étapes du workflow : - Setup Rust toolchain (rustup) - Setup Node.js 20 - `cargo check --manifest-path src-tauri/Cargo.toml --all-targets` - `cargo test --manifest-path src-tauri/Cargo.toml` - `npm ci` - `npm run build` (vite build, valide le TS et la compilation frontend) - Optionnel : `npx tsc --noEmit` pour un check TS strict si le build ne le couvre pas déjà - [ ] Optionnel : ajouter `cargo clippy --all-targets -- -D warnings` pour catch les anti-patterns - [ ] Cache des dépendances (cargo registry + target/, node_modules) pour garder le workflow rapide (~2-5 min cible) - [ ] Vérifier que le workflow tourne bien sur PR #56 ou un PR de test ## Critères d'acceptation - [ ] Un push de branche déclenche le workflow - [ ] Une erreur Rust (ex: variable non déclarée) fait échouer le workflow - [ ] Une erreur TypeScript fait échouer le workflow - [ ] Le workflow réussit sur la branche `main` actuelle - [ ] Documenté dans le README ou CLAUDE.md (mention de la CI sur PRs) ## Impact Débloque la validation automatique pour tous les futurs sprints, et particulièrement le reste de spec-monetisation (issues #51, #53 qui touchent du Rust).
maximus added this to the spec-monetisation milestone 2026-04-09 13:15:26 +00:00
maximus added the
status:ready
type:infra
source:human
labels 2026-04-09 13:15:26 +00:00
maximus added
status:approved
and removed
status:ready
labels 2026-04-09 13:22:20 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#60
No description provided.