From 040712c73640263ca882a9592f0d831d5ce20a36 Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Mon, 7 Sep 2026 10:48:20 +0200 Subject: [PATCH] =?UTF-8?q?CI=20=E2=80=94=20le=20runner=20ne=20r=C3=A9sout?= =?UTF-8?q?=20pas=20gitea.arcodange.lab=20:=20repli=20sur=20l'adresse=20qu?= =?UTF-8?q?e=20Gitea=20lui=20donne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MESURÉ (run 6728, étape « RELEVÉ ») : GITHUB_SERVER_URL=http://192.168.65.254:43000 --- gitea.arcodange.lab --- PAS DE RÉSOLUTION (getent code 2) curl: (6) Could not resolve host: gitea.arcodange.lab --- prometheus-community.github.io --- 2606:50c0:8000::153 … http=404 Le runner résout parfaitement les registres publics et PAS le nom interne. SEPT charts sur dix déclarent le registre Helm interne en dépendance — crowdsec, grafana, hashicorp-vault, pgbouncer, pgcat, prometheus, redis : depuis que #32 a énuméré les charts, leurs jobs mouraient TOUS à la même seconde, avant la moindre étape utile. C'est un trou d'infrastructure que #32 a rendu visible, pas un défaut d'un lot. Le repli n'est essayé QU'APRÈS avoir constaté que le nom d'origine ne répond pas, et la réécriture des URLs de l'index ne se fait QUE si l'on est effectivement en repli : sur un runner qui sait résoudre, rien ne change — vérifié en local, code 0, deux dépendances téléchargées, aucune ligne de repli. Lecture anonyme du registre vérifiée (HTTP 200) : aucun jeton n'entre ici. ⚠ Piège évité au passage : `[[ … ]] && url=…` sous `set -e` AVORTE le script quand la condition est fausse. C'est un `if`. Refs: arcodange-org/tools#36 --- .gitea/workflows/helmcharts.yaml | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/.gitea/workflows/helmcharts.yaml b/.gitea/workflows/helmcharts.yaml index 3af8d43..03d3ec5 100644 --- a/.gitea/workflows/helmcharts.yaml +++ b/.gitea/workflows/helmcharts.yaml @@ -35,6 +35,23 @@ concurrency: cancel-in-progress: true .helm_install_dependencies_sh: &helm_install_dependencies_sh |- + # ⚠⚠ MESURÉ le 2026-09-07 (run 6728, étape « RELEVÉ ») : ce runner NE RÉSOUT + # PAS `gitea.arcodange.lab` — `getent` code 2, `curl` code 6 — alors qu'il + # résout parfaitement les registres publics. SEPT charts sur dix déclarent le + # registre Helm interne en dépendance (crowdsec, grafana, hashicorp-vault, + # pgbouncer, pgcat, prometheus, redis) : depuis que #32 a énuméré les charts, + # leurs jobs mouraient TOUS ici, en 7 s, avant la moindre étape utile — et le + # premier à en faire les frais est le premier à avoir été construit. + # + # Gitea donne au job sa PROPRE adresse joignable dans `GITHUB_SERVER_URL` + # (mesuré : http://192.168.65.254:43000). On ne s'en sert qu'en REPLI, et + # seulement après avoir constaté que le nom d'origine ne répond pas : rien ne + # change sur un runner qui, lui, sait le résoudre. Lecture anonyme du registre + # vérifiée (HTTP 200), donc aucun jeton n'entre ici. + FORGE_INTERNE='https://gitea.arcodange.lab' + + joignable() { curl -sf -o /dev/null -m 15 "$1"; } + helm_install_dependencies() { chart_file="$1/Chart.yaml" [[ ! -f "$chart_file" ]] && echo "Chart.yaml not found in $1" && return 1 @@ -43,7 +60,27 @@ concurrency: name=$(jq -r '.name' <<< "$dep") version=$(jq -r '.version' <<< "$dep") repo=$(jq -r '.repository' <<< "$dep") + + en_repli=non + if ! joignable "${repo}/index.yaml"; then + repli="${repo/$FORGE_INTERNE/${GITHUB_SERVER_URL:-$FORGE_INTERNE}}" + if [[ "$repli" != "$repo" ]] && joignable "${repli}/index.yaml"; then + echo " ⚠ ${repo} injoignable depuis ce runner — repli sur ${repli}" + repo="$repli" + en_repli=oui + fi + fi + url=$(curl -s "${repo}/index.yaml" | yq eval ".entries.${name}[] | select(.version == \"${version}\") | .urls[0]" -) + # L'index du registre interne publie des URLs ABSOLUES vers le même nom + # d'hôte : le repli doit les suivre, sinon on retombe dans le code 6. + # ⚠ On ne réécrit QUE si l'on est effectivement en repli — sur un runner + # sain, le chemin d'origine reste le chemin d'origine. + # ⚠ Un `[[ … ]] && …` ici serait un piège : sous `set -e`, la liste rend + # non nul quand la condition est fausse, et le script AVORTE. + if [[ "$en_repli" = oui ]]; then + url="${url/$FORGE_INTERNE/$GITHUB_SERVER_URL}" + fi echo "Dependency: $name, Version: $version, URL: $url" mkdir -p "$1/charts" && curl -sL "$url" -o "$1/charts/${name}-${version}.tgz"