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"