[infra] Terraform en chaîne d'intégration : fmt, validate, tflint et scan de configuration #72

Closed
opened 2026-09-02 09:04:23 +00:00 by gabriel · 0 comments
Member

Exigence couverte

ENF-09, ENF-11

Épreuve servie

EC03 · CI/CD et qualité

Charge estimée

0,5 j.h

Ce qu'on veut obtenir

Que toute MR touchant infra/terraform/ soit vérifiée automatiquement, sans aucun accès Azure ni credential, et que les mauvaises configurations soient attrapées avant la fusion.

Critères d'acceptation

  • Un job .forgejo/workflows/ filtré sur infra/terraform/** joue terraform fmt -check -recursive, terraform validate, tflint.
  • Un job joue checkov (ou trivy config) sur infra/terraform/ et publie son rapport en artefact.
  • Aucun secret, aucune variable ARM_* requise.
  • Politique de blocage : bloquant à partir du jour 5, informatif avant, aligné sur la logique mypy du CI existant. Les exceptions justifiées vivent dans un fichier de configuration versionné.
  • Un fichier mal formaté et une règle enfreinte volontairement (allow_blob_public_access = true) font échouer la chaîne.

Comment on le vérifie

Commande   une MR d'essai avec un fichier mal formaté puis une mauvaise configuration
Attendu    la chaîne échoue et nomme le problème, puis passe après correction
Preuve     le journal du job en échec puis en succès

Manuel d'exploitation à mettre à jour

docs/runbooks/ci.md (section Terraform et sécurité IaC)

Risque et retour arrière

Image Terraform indisponible dans le runner : épingler une version. Trop de faux positifs au départ : démarrer informatif, resserrer. Jamais désactiver une règle sans fiche.

Dépendances

Dépend de #68 (répertoire infra/terraform/ à valider). Distinct de #40 (chaîne applicative), qu'il ne modifie pas.

### Exigence couverte ENF-09, ENF-11 ### Épreuve servie EC03 · CI/CD et qualité ### Charge estimée 0,5 j.h ### Ce qu'on veut obtenir Que toute MR touchant `infra/terraform/` soit vérifiée automatiquement, sans aucun accès Azure ni credential, et que les mauvaises configurations soient attrapées avant la fusion. ### Critères d'acceptation - [ ] Un job `.forgejo/workflows/` filtré sur `infra/terraform/**` joue `terraform fmt -check -recursive`, `terraform validate`, `tflint`. - [ ] Un job joue `checkov` (ou `trivy config`) sur `infra/terraform/` et publie son rapport en artefact. - [ ] Aucun secret, aucune variable `ARM_*` requise. - [ ] Politique de blocage : bloquant à partir du jour 5, informatif avant, aligné sur la logique mypy du CI existant. Les exceptions justifiées vivent dans un fichier de configuration versionné. - [ ] Un fichier mal formaté et une règle enfreinte volontairement (`allow_blob_public_access = true`) font échouer la chaîne. ### Comment on le vérifie ``` Commande une MR d'essai avec un fichier mal formaté puis une mauvaise configuration Attendu la chaîne échoue et nomme le problème, puis passe après correction Preuve le journal du job en échec puis en succès ``` ### Manuel d'exploitation à mettre à jour `docs/runbooks/ci.md` (section Terraform et sécurité IaC) ### Risque et retour arrière Image Terraform indisponible dans le runner : épingler une version. Trop de faux positifs au départ : démarrer informatif, resserrer. Jamais désactiver une règle sans fiche. ### Dépendances Dépend de #68 (répertoire `infra/terraform/` à valider). Distinct de #40 (chaîne applicative), qu'il ne modifie pas.
gabriel self-assigned this 2026-09-02 09:04:23 +00:00
florian added this to the EnerVision project 2026-09-02 14:51:48 +00:00
florian self-assigned this 2026-09-03 08:04:40 +00:00
gabriel added the due date 2026-09-11 2026-09-03 12:41:07 +00:00
gabriel added this to the Post-jury milestone 2026-09-03 15:06:04 +00:00
justine self-assigned this 2026-09-09 09:25:38 +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".
2026-09-11
Dependencies

No dependencies set

Reference
g2/enervision#72
No description provided.