CI — le runner ne résout pas gitea.arcodange.lab : repli sur l'adresse que Gitea lui donne
Helm Charts / Detect changed charts (pull_request) Successful in 16s
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) Successful in 53s

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
This commit is contained in:
2026-09-07 10:48:20 +02:00
parent d03b323394
commit 040712c736
+37
View File
@@ -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"