From d03b3233949829b44907b64c4bb5faed97bb9bcd Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Mon, 7 Sep 2026 10:42:49 +0200 Subject: [PATCH] =?UTF-8?q?CI=20=E2=80=94=20le=20banc=20passe=20AVANT=20le?= =?UTF-8?q?=20t=C3=A9l=C3=A9chargement=20des=20d=C3=A9pendances,=20et=20un?= =?UTF-8?q?=20relev=C3=A9=20nomme=20l'h=C3=B4te=20qui=20ne=20se=20r=C3=A9s?= =?UTF-8?q?out=20pas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .gitea/workflows/helmcharts.yaml | 71 +++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 25 deletions(-) diff --git a/.gitea/workflows/helmcharts.yaml b/.gitea/workflows/helmcharts.yaml index ef27ea8..3af8d43 100644 --- a/.gitea/workflows/helmcharts.yaml +++ b/.gitea/workflows/helmcharts.yaml @@ -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:-}" + 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: |