Huit charts sur dix n'étaient JAMAIS construits, et leurs PR étaient vertes
Helm Charts / Detect changed charts (pull_request) Successful in 22s
Helm Charts / Library charts tool (pull_request) Skipped
Helm Charts / Application charts chart (pull_request) Skipped
Helm Charts / Application charts crowdsec (pull_request) Skipped
Helm Charts / Application charts grafana (pull_request) Skipped
Helm Charts / Application charts pgbouncer (pull_request) Skipped
Helm Charts / Application charts pgcat (pull_request) Skipped
Helm Charts / Application charts prometheus (pull_request) Skipped
Helm Charts / Application charts redis (pull_request) Skipped
Helm Charts / Application charts hashicorp-vault (pull_request) Successful in 15s
Helm Charts / Application charts minio (pull_request) Successful in 18s

Trouvé en refusant de lire le vert de cette PR : elle réécrit le chart `minio`
en entier, et la CI a rendu `success` avec « Detect changed charts » ✓ et les
deux jobs de construction en `Skipped`. Aucun job `Application charts minio`
n'existait.

La cause : Gitea ne sait pas monter une matrice DYNAMIQUE, donc la matrice est
codée en dur — `chart: [tool]` et `chart: [pgcat]`. Le job `filter-chart`
calcule POURTANT la bonne réponse ; personne ne la consomme. Le `if:` vérifie
seulement si le chart codé en dur figure dans la liste détectée.

Résultat mesuré : 10 charts dans le dépôt, 2 constructibles. `minio`, `redis`,
`crowdsec`, `hashicorp-vault`, `grafana`, `prometheus`, `pgbouncer` et `chart`
ne passaient sous aucun `helm template`, et toute PR qui les touchait affichait
vert.

Le remède ne demande PAS de matrice dynamique : le `if:` filtre déjà sur la
sortie du détecteur, donc un chart non modifié reste `Skipped`. Il ne manquait
que l'ÉNUMÉRATION — les neuf applicatifs sont désormais listés.

⚠ Le mode d'échec de ce fichier est maintenant écrit dedans : ajouter un chart
au dépôt sans l'ajouter à la liste le rend invisible à la CI, en silence.
This commit is contained in:
2026-09-03 00:25:11 +02:00
parent ffd52ba5ab
commit 6913e5da04
+24 -2
View File
@@ -131,7 +131,26 @@ jobs:
needs: filter-chart
strategy:
matrix:
chart: [tool] # turns out gitea doesn't support dynamic matrix
# ⚠⚠ ÉNUMÉRATION EXHAUSTIVE, ET ELLE DOIT LE RESTER.
#
# Gitea ne sait pas monter une matrice DYNAMIQUE : on ne peut pas
# écrire `fromJson(needs.filter-chart.outputs.library_charts)` ici.
# La conséquence est passée inaperçue longtemps — le détecteur
# calculait la bonne réponse, et PERSONNE NE LA CONSOMMAIT : le `if:`
# ci-dessous vérifie seulement si le chart CODÉ EN DUR figure dans la
# liste détectée. Seuls `tool` et `pgcat` pouvaient donc être
# construits ; les HUIT AUTRES charts de ce dépôt ne l'étaient jamais,
# et leurs PR affichaient vert. Mesuré le 2026-09-02 sur la PR #32,
# qui réécrivait le chart `minio` en entier : `Detect changed charts`
# ✓, les deux jobs de construction `Skipped`, statut global `success`.
#
# Le remède n'a pas besoin de matrice dynamique : le `if:` filtre DÉJÀ
# sur la sortie du détecteur, donc un chart non modifié reste `Skipped`.
# Il ne manquait que l'ÉNUMÉRATION.
#
# ⚠ Ajouter un chart au dépôt SANS l'ajouter ici le rend invisible à la
# CI, en silence. C'est le mode d'échec de ce fichier.
chart: [tool]
# chart: ${{ fromJson(needs.filter-chart.outputs.library_charts) }}
type: [library]
if: >-
@@ -191,6 +210,9 @@ jobs:
needs: [filter-chart,library-charts]
strategy:
matrix:
# ⚠ Les NEUF charts applicatifs du dépôt — voir l'avertissement du job
# `library-charts` ci-dessus. Un chart absent de cette liste n'est
# JAMAIS construit, et sa PR est verte quand même.
# chart: ${{ fromJson(needs.filter-chart.outputs.application_charts) }}
chart: [pgcat]
chart: [chart, crowdsec, grafana, hashicorp-vault, minio, pgbouncer, pgcat, prometheus, redis]
type: [application]