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
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:
@@ -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: |
|
||||
|
||||
Reference in New Issue
Block a user