chore(build): CI de génération/publication des données transit (registry Forgejo + Trivy hebdo) #12

Closed
opened 2026-08-23 18:43:45 +02:00 by CyrilLeblanc · 0 comments
Owner

Bilan de réalisation

Terminé et validé en conditions réelles sur l'instance.

Chaîne transit-data (run #3 : success)

  • Génération depuis l'API M réso (~100 s), validation structurelle + drift ±15 % (scripts/validate_transit_data.py, partagé CI/humains).
  • Première publication réelle sur le registry : transit-data/2026.08.23/ + manifest (sha256 2e4f62fb…, 2 478 510 o), pointeur latest relu anonymément (200).
  • Commit automatique de l'asset par la CI : 512e620.

Chaîne vuln-scan (run #8 : success)

  • Trivy 0.74.0 : binaire téléchargé directement (l'action aquasec/* n'est pas mirrorée par le runner), épinglé par sha256 vérifié avant exécution.
  • Cible réelle de scan : app/gradle.lockfile (260 dépendances, dependency locking activé) — le premier run scannait 0 fichier en sortant vert ; le workflow échoue désormais explicitement sur scan vide (num=0) ou lockfile absent.
  • Upload du rapport SARIF en artifact via upload-artifact@v3 (v4 non supporté par Forgejo : GHESNotSupportedError).
  • État actuel des dépendances : 43 vulnérabilités connues (19 HIGH, 21 MEDIUM, 3 LOW, 0 CRITICAL) — le gate CRITICAL passe légitimement.

Découvertes d'instance (documentées dans les en-têtes de workflow)

  • Immutabilité des packages génériques effective (re-PUT → 409) ; ?override=true → 409 aussi : jamais utilisé, re-publication même jour = échec volontaire.
  • Runner v12.11.1 résout les actions via data.forgejo.org sans fallback github.com ; seul actions/* est mirroré.
  • PUT de fichier : --upload-file obligatoire (Content-Type explicite cassé → 500).

Maintenance

  • Après toute changement de dépendances : ./gradlew :app:dependencies --write-locks (sinon Gradle échoue bruyamment — échec sûr).
  • Cron : transit-data lundi 04:23 UTC, trivy lundi 03:23 UTC, plus déclenchement manuel.
## Bilan de réalisation Terminé et validé en conditions réelles sur l'instance. ### Chaîne transit-data (run #3 : success) - Génération depuis l'API M réso (~100 s), validation structurelle + drift ±15 % (`scripts/validate_transit_data.py`, partagé CI/humains). - Première publication réelle sur le registry : `transit-data/2026.08.23/` + manifest (sha256 `2e4f62fb…`, 2 478 510 o), pointeur `latest` relu **anonymément** (200). - Commit automatique de l'asset par la CI : `512e620`. ### Chaîne vuln-scan (run #8 : success) - Trivy 0.74.0 : binaire téléchargé directement (l'action `aquasec/*` n'est pas mirrorée par le runner), épinglé par sha256 vérifié avant exécution. - **Cible réelle de scan** : `app/gradle.lockfile` (260 dépendances, dependency locking activé) — le premier run scannait 0 fichier en sortant vert ; le workflow échoue désormais explicitement sur scan vide (`num=0`) ou lockfile absent. - Upload du rapport SARIF en artifact via `upload-artifact@v3` (v4 non supporté par Forgejo : GHESNotSupportedError). - État actuel des dépendances : 43 vulnérabilités connues (19 HIGH, 21 MEDIUM, 3 LOW, **0 CRITICAL**) — le gate CRITICAL passe légitimement. ### Découvertes d'instance (documentées dans les en-têtes de workflow) - Immutabilité des packages génériques **effective** (re-PUT → 409) ; `?override=true` → 409 aussi : jamais utilisé, re-publication même jour = échec volontaire. - Runner v12.11.1 résout les actions via `data.forgejo.org` sans fallback github.com ; seul `actions/*` est mirroré. - PUT de fichier : `--upload-file` obligatoire (Content-Type explicite cassé → 500). ### Maintenance - Après toute changement de dépendances : `./gradlew :app:dependencies --write-locks` (sinon Gradle échoue bruyamment — échec sûr). - Cron : transit-data lundi 04:23 UTC, trivy lundi 03:23 UTC, plus déclenchement manuel.
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
CyrilLeblanc/gresit#12
No description provided.