fix(ci): dependency-check — data dir NVD persistant via volume hôte /opt/dc-cache #10

Merged
nonobis merged 1 commit from fix/dc-cache-persistant into main 2026-08-14 14:42:45 +02:00
Owner

Contexte

Chaque run CI exécute OWASP Dependency-Check (action .forgejo/actions/dependency-check) qui télécharge la base NVD complète (~377 000 entrées, ~50 min) à chaque run :

  1. Le data dir utilisé était ~/.cache/dependency-check (HOME du conteneur de job, éphémère).
  2. Le step actions/cache@v4 (key dependency-check-${{ runner.os }}-db) ne persistait pas : le scan échoue sur les CVE bloquantes AVANT le save, donc rien n'était restauré au run suivant.

Solution (option 2 — retenue)

Volume hôte persistant monté dans le conteneur de job via container.options du runner :

container:
  options: "-v /opt/forgejo-runner/dc-cache:/opt/dc-cache"

La NVD est téléchargée une seule fois par LXC runner, puis réutilisée pour toujours, indépendamment de l'échec du job. (Le montage est déployé sur les 3 LXC runner-hugin/murin/odin en parallèle.)

Changements

  • --data ~/.cache/dependency-check--data /opt/dc-cache
  • Commentaire mis à jour : le data dir est le volume hôte monté via container.options, plus la HOME du conteneur de job
  • Le step actions/cache@v4 pour ~/.cache/dependency-check dans ci-full est conservé comme filet de sécurité inter-runners (secondaire)

Impact

  • 1er run après montage : re-téléchargement unique de la NVD (long, ~50 min) — attendu
  • Runs suivants : Downloaded 0/N / « NVD database is up to date » → gain ~50 min par run CI sur les projets avec dependency-check-enabled: true
## Contexte Chaque run CI exécute OWASP Dependency-Check (action `.forgejo/actions/dependency-check`) qui télécharge la base NVD **complète** (~377 000 entrées, ~50 min) à **chaque** run : 1. Le data dir utilisé était `~/.cache/dependency-check` (HOME du conteneur de job, **éphémère**). 2. Le step `actions/cache@v4` (key `dependency-check-${{ runner.os }}-db`) ne persistait pas : le scan échoue sur les CVE bloquantes AVANT le save, donc rien n'était restauré au run suivant. ## Solution (option 2 — retenue) **Volume hôte persistant** monté dans le conteneur de job via `container.options` du runner : ```yaml container: options: "-v /opt/forgejo-runner/dc-cache:/opt/dc-cache" ``` La NVD est téléchargée **une seule fois par LXC runner**, puis réutilisée pour toujours, indépendamment de l'échec du job. (Le montage est déployé sur les 3 LXC runner-hugin/murin/odin en parallèle.) ## Changements - `--data ~/.cache/dependency-check` → `--data /opt/dc-cache` - Commentaire mis à jour : le data dir est le volume hôte monté via `container.options`, plus la HOME du conteneur de job - Le step `actions/cache@v4` pour `~/.cache/dependency-check` dans `ci-full` est **conservé** comme filet de sécurité inter-runners (secondaire) ## Impact - 1er run après montage : re-téléchargement unique de la NVD (long, ~50 min) — attendu - Runs suivants : `Downloaded 0/N` / « NVD database is up to date » → gain ~50 min par run CI sur les projets avec `dependency-check-enabled: true`
Option 2 : volume hôte monté via container.options du runner
(-v /opt/forgejo-runner/dc-cache:/opt/dc-cache) à la place de ~/.cache/dependency-check
(HOME du conteneur de job, éphémère).

Avant : la NVD complète (~377k entrées, ~50 min) était re-téléchargée à CHAQUE run car
le data dir ne survivait pas au conteneur de job et le save actions/cache n'était
jamais atteint (scan bloquant échoue avant).

Après : la base NVD est téléchargée UNE fois par LXC runner puis réutilisée pour
toujours, indépendamment de l'échec du job. Le cache actions/cache (~/.cache/
dependency-check) reste en place comme filet de sécurité inter-runners.
nonobis deleted branch fix/dc-cache-persistant 2026-08-14 14:42:47 +02:00
Sign in to join this conversation.
No reviewers
No labels
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
nonobis/templates!10
No description provided.