CI — le banc passe AVANT le téléchargement des dépendances, et un relevé nomme l'hôte qui ne se résout pas
Helm Charts / Detect changed charts (pull_request) Successful in 17s
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 hashicorp-vault (pull_request) Skipped
Helm Charts / Application charts minio (pull_request) Skipped
Helm Charts / Application charts pgbouncer (pull_request) Skipped
Helm Charts / Application charts pgcat (pull_request) Skipped
Helm Charts / Application charts redis (pull_request) Skipped
Helm Charts / Application charts prometheus (pull_request) Failing after 32s

Le tout premier run du job `Application charts prometheus` — le premier depuis
que #32 a énuméré les charts — est mort à l'étape `helm_install_dependencies`,
`curl` code **6** (hôte non résolu), en **7 s**, AVANT toute étape utile. Le
banc du veilleur en est sorti `Skipped` : ni rouge, ni absent, rien ne dépasse.
C'est la forme même du gate qui n'existe pas.

Deux changements, tous deux minimaux :

1. Le banc du veilleur remonte JUSTE APRÈS le checkout. Il n'a besoin ni du
   réseau ni du registre Helm interne (stdlib Python, plus `yq`/`jq` déjà là),
   donc il s'exécute et rend un verdict quoi qu'il arrive ensuite.
2. Un RELEVÉ (jamais une gate : `exit 0` en dur) nomme lequel des deux hôtes
   tombe. **7 charts sur 10 dépendent du registre interne
   `gitea.arcodange.lab`** — crowdsec, grafana, hashicorp-vault, pgbouncer,
   pgcat, prometheus, redis. Si c'est bien lui que le runner ne résout pas,
   alors sept jobs sur dix ne peuvent PAS passer, quel que soit leur contenu :
   un trou d'infrastructure que #32 vient de rendre visible, pas un défaut de
   ce lot. À retirer quand le trou est bouché.

Refs: arcodange-org/tools#36
This commit is contained in:
2026-09-07 10:42:49 +02:00
parent 88e0f5e862
commit d03b323394
+46 -25
View File
@@ -170,6 +170,52 @@ jobs:
- uses: actions/checkout@v4
# ⚠⚠ UNE GATE QUI N'EST CÂBLÉE NULLE PART N'EXISTE PAS (tools#36) — et une
# gate placée APRÈS une étape qui échoue toujours n'existe pas non plus :
# elle sort `Skipped`, ni rouge ni absente, rien ne dépasse. Le banc du
# veilleur passe donc AVANT le téléchargement des dépendances, qui a besoin
# du réseau et du registre Helm interne. Il n'a besoin d'aucun des deux :
# stdlib Python seule, plus `yq`/`jq` déjà présents.
- name: Banc du veilleur (chart prometheus)
if: >-
${{
matrix.chart == 'prometheus'
&& (
contains(fromJSON('["","pull_request"]'), github.event_name)
|| github.ref != 'refs/heads/main'
)
}}
run: |
set -euo pipefail
python3 -m unittest discover -s prometheus/veilleur -v
# Le témoin toujours allumé ne doit JAMAIS partir sur Telegram : sans
# sa route vers le récepteur vide il sonnerait toutes les 3 h, et un
# témoin qui sonne est un témoin qu'on coupe.
yq -o=json eval '.prometheus.alertmanager.config' prometheus/values.yaml > /tmp/am.json
jq -e '[.route.routes[] | select(.matchers[0] == "alertname=\"Veilleur\"") | .receiver] == ["neant"]' /tmp/am.json
jq -e '[.receivers[] | select(.name == "neant") | keys] == [["name"]]' /tmp/am.json
# ⚠ RELEVÉ, PAS UNE GATE — il ne peut pas faire échouer le job. Le premier
# run du job `Application charts prometheus` (le tout premier depuis que
# #32 a énuméré les charts) est mort ICI, `curl` code 6 : le runner ne
# RÉSOUT PAS l'hôte de la dépendance. Sept charts sur dix dépendent du
# registre Helm interne `gitea.arcodange.lab` — donc sept jobs sur dix ne
# peuvent pas passer, quel que soit leur contenu. Ce relevé nomme lequel
# des deux hôtes tombe, pour que la prochaine session n'ait pas à le
# deviner. À retirer quand le trou est bouché.
- name: RELEVÉ — ce que le runner sait résoudre
run: |
set +e
echo "GITHUB_SERVER_URL=${GITHUB_SERVER_URL:-<vide>}"
for hote in gitea.arcodange.lab prometheus-community.github.io; do
echo "--- $hote ---"
getent hosts "$hote" || echo " PAS DE RÉSOLUTION (getent code $?)"
curl -sS -o /dev/null -m 10 -w " http=%{http_code}\n" "https://$hote/" \
|| echo " curl code $?"
done
exit 0
- run: *helm_install_dependencies_sh
- name: Install Helm for test
@@ -193,31 +239,6 @@ jobs:
}}
run: helm template $chart --debug
# ⚠⚠ UNE GATE QUI N'EST CÂBLÉE NULLE PART N'EXISTE PAS (tools#36). Le banc
# du veilleur — celui qui rejoue les trois modes de la panne du 4 au 7
# septembre — tourne donc ICI, dans le job qui construit déjà le chart
# prometheus, à chaque PR qui le touche. Stdlib Python seule : rien à
# installer, rien à télécharger.
- name: Banc du veilleur (chart prometheus)
if: >-
${{
matrix.chart == 'prometheus'
&& (
contains(fromJSON('["","pull_request"]'), github.event_name)
|| github.ref != 'refs/heads/main'
)
}}
run: |
set -euo pipefail
python3 -m unittest discover -s prometheus/veilleur -v
# Le témoin toujours allumé ne doit JAMAIS partir sur Telegram : sans
# sa route vers le récepteur vide il sonnerait toutes les 3 h, et un
# témoin qui sonne est un témoin qu'on coupe.
yq -o=json eval '.prometheus.alertmanager.config' prometheus/values.yaml > /tmp/am.json
jq -e '[.route.routes[] | select(.matchers[0] == "alertname=\"Veilleur\"") | .receiver] == ["neant"]' /tmp/am.json
jq -e '[.receivers[] | select(.name == "neant") | keys] == [["name"]]' /tmp/am.json
- name: publish ${{ matrix.chart }} helm chart
if: ${{ contains(fromJSON('["","push"]'), github.event_name) && github.ref == 'refs/heads/main' }}
run: |