From 6913e5da0485e942c69efbac06bdd7c5d5f649b8 Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Thu, 3 Sep 2026 00:25:11 +0200 Subject: [PATCH] =?UTF-8?q?Huit=20charts=20sur=20dix=20n'=C3=A9taient=20JA?= =?UTF-8?q?MAIS=20construits,=20et=20leurs=20PR=20=C3=A9taient=20vertes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- .gitea/workflows/helmcharts.yaml | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/helmcharts.yaml b/.gitea/workflows/helmcharts.yaml index 57b5bdb..399d8c1 100644 --- a/.gitea/workflows/helmcharts.yaml +++ b/.gitea/workflows/helmcharts.yaml @@ -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] \ No newline at end of file