Skip to content

feat: écarter une étape contrôlée réclame un second regard, et les modèles nomment qui contrôle #129

feat: écarter une étape contrôlée réclame un second regard, et les modèles nomment qui contrôle

feat: écarter une étape contrôlée réclame un second regard, et les modèles nomment qui contrôle #129

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
# Une exécution par référence : pousser deux fois de suite annule la première,
# qui n'apprendrait plus rien sur l'état courant.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version-file: .nvmrc
cache: pnpm
- run: pnpm install --frozen-lockfile
# Le client Prisma est gitignoré : sans lui, le typecheck échoue sur des
# modules absents plutôt que sur une vraie faute.
- run: pnpm db:generate
- run: pnpm verify
# `pnpm verify` ne joue que la première passe, celle du schéma Zod. La seconde,
# qui confronte le scope de chaque profil au schéma du connecteur visé, ne
# tourne que dans cette commande : sans elle ici, un profil fautif commité
# passerait la CI et ne se verrait qu'à l'octroi. La politique d'exemple est le
# seul exemplaire versionné de ce que les instances écrivent, et la commande
# attend les noms réels des fichiers, d'où la copie.
- name: La politique d'exemple se charge, et ses profils se valident
run: |
mkdir -p "${RUNNER_TEMP}/politique"
cp config/accounts.exemple.yaml "${RUNNER_TEMP}/politique/accounts.yaml"
cp config/config.exemple.yaml "${RUNNER_TEMP}/politique/config.yaml"
POLICY_DIR="${RUNNER_TEMP}/politique" pnpm policy:check
# Les JSON Schema sont dérivés des schémas Zod et versionnés pour servir un
# dépôt qui n'a pas le code sous la main. Commités périmés, ils font refuser par
# l'éditeur ce que le démarrage accepte, ou l'inverse, et personne ne s'en
# aperçoit avant d'écrire une politique.
- name: Les JSON Schema commités sont ceux que la génération produit
run: |
pnpm policy:schema
if ! git diff --exit-code -- config/accounts.schema.json config/config.schema.json; then
echo "Les schémas versionnés ne suivent plus les schémas Zod : lancez pnpm policy:schema et commitez le résultat."
exit 1
fi