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: |