Public : équipes qui exécutent Go sur un Mac distant ou des runners CI et subissent des tirages de modules lents ou instables à travers des frontières réseau. Ce guide livre : une matrice de décision (proxy interne type Athens contre chaîne GOPROXY publique), un récapitulatif GOSUMDB / chemins privés, et des exports shell prêts à coller. Retrouvez aussi le blog et la FAQ pool de builds — lecture sans compte obligatoire.

Contrairement aux guides centrés uniquement sur Git, npm ou Homebrew, ce texte se concentre sur la résolution des modules Go : comment le compilateur choisit un proxy, quand il retombe sur direct, et comment la base de sommes protège l’intégrité sans bloquer vos dépôts privés. Sur un nœud Apple Silicon partagé, la latence du premier saut et la qualité du disque du GOMODCACHE priment souvent sur la puissance CPU, car chaque build ne télécharge que des archives ZIP relativement petites mais nombreuses.

  • Chaîne GOPROXY : un miroir régional time-out avant la fin du job, alors que le repli n’est jamais essayé parce que l’ordre des entrées est incorrect ou qu’il manque une politique terminale (direct ou autre miroir).
  • Fuite de modules privés : du code interne transite par un GOPROXY public faute de motifs GOPRIVATE / GONOPROXY couvrant les vanity paths réels.
  • Contention de cache : plusieurs jobs pointent vers le même GOMODCACHE sur disque mécanique ou sans rotation d’espace ; les go test à froid se battent pour les verrous et les métadonnées divergent.

① Matrice : proxy de modules auto-hébergé vs chaîne GOPROXY publique

Avant de modifier launchd, les profils shell ou le YAML CI, figez cette grille : l’objectif est une latence prévisible et une discipline de sommes de contrôle, pas « le premier miroir qui répond ».

Approche Pertinent quand Points de vigilance (Mac distant / CI)
Athens (ou équivalent) interne Cache air-gap, valeurs par défaut go.env homogènes, conservation d’archives ZIP approuvées pour audit ou conformité Quotas disque, TLS, sauvegardes ; prévoir bascule DNS ou instance de secours si le proxy tombe
Chaîne publique (miroir entreprise, miroir régional, proxy.golang.org, direct) Équipe qui veut peu d’exploitation et accepte la dépendance à l’infra mondiale + la politique de sortie Ordonner les sauts par latence conforme ; n’ajouter direct en dernier que si le fetch VCS est autorisé
Hybride Modules publics via chaîne ; modules GOPRIVATE vers Git interne ou segment de proxy dédié Aligner GONOPROXY sur chaque préfixe privé ; DNS Git identique sur tous les runners

Un GOMODCACHE local sur NVMe profite aux runners M-series : les téléchargements sont surtout limités par le réseau et le stockage, rarement par le CPU.

② Table des paramètres : GOPROXY, confidentialité, GOSUMDB, répertoires

Définissez ces variables par job, pool ou dépôt. Adaptez les chemins ; gardez les secrets hors des journaux CI.

Variable Rôle Exemple ou motif
GOPROXY Liste ordonnée de proxys module ; essai séquentiel jusqu’à succès https://go-interne.example,https://miroir-region,direct
GOPRIVATE Préfixes pour lesquels le comportement « public » (sumdb, certains proxys) est atténué github.com/monorg/*,*.corp.example
GONOPROXY Préfixes qui ne doivent pas utiliser les entrées GOPROXY Souvent identique à GOPRIVATE pour forges Git internes
GONOSUMDB Préfixes exemptés de requêtes vers la base de sommes Modules privés sans somme publiée ou politique interdisant l’appel sortant
GOSUMDB Service de sommes pour modules publics ; off seulement avec gouvernance explicite Défaut sum.golang.org ou URL du sumdb interne
GOMODCACHE Stockage des sources et ZIP de modules téléchargés /usr/local/ci/gomod-partagé ou sous-répertoire par job sous /var/tmp
GOTMPDIR Fichiers temporaires du toolchain ; utile pour éviter disque racine plein /var/tmp/go-tmp-${CI_JOB_ID:-local} avec mkdir -p
GOFLAGS Drapeaux globaux, ex. reproductibilité CI -mod=readonly avec go.sum versionné

Autres guides d’accélération sur MacPull : Rust / Cargo, miroir et lockfile ; SSH, relais et proxy transfrontalier pour stabiliser la couche réseau commune aux runners.

③ Mise en œuvre exécutable : cinq étapes pour des tirages reproductibles

1
Harmoniser la toolchain. Même go version sur les runners pour que go.sum et -mod=readonly se comportent de façon stable d’un job à l’autre.
2
Déclarer d’abord les chemins privés. Exporter GOPRIVATE et GONOPROXY, puis vérifier avec go env GOPRIVATE GONOPROXY dans le shell CI.
3
Composer la chaîne. Commencer par le miroir conforme le plus proche du nœud, ajouter un second miroir, puis proxy.golang.org ou direct selon la politique réseau.
4
Verrouiller GOSUMDB. Garder la vérification pour le code public ; si off est imposé, documenter l’approbation sécurité dans le dépôt du workflow.
5
Isoler les caches. GOMODCACHE sur SSD rapide ; pools distincts si code réglementé et dépendances publiques cohabitent ; élagage planifié.

Exemple d’exports à coller dans un prélude CI après adaptation des hôtes :

export GOPROXY="https://go-interne.example.com,https://proxy.golang.org,direct"
export GOPRIVATE="github.com/monorg/*,go.corp.example/*"
export GONOPROXY="github.com/monorg/*,go.corp.example/*"
export GONOSUMDB="github.com/monorg/*,go.corp.example/*"
export GOSUMDB="sum.golang.org"
export GOMODCACHE="/usr/local/ci/gomodcache"
export GOTMPDIR="/var/tmp/go-tmp-${CI_JOB_ID:-local}"
mkdir -p "$GOMODCACHE" "$GOTMPDIR"
export GOFLAGS="-mod=readonly"

Validez avec go env | grep -E 'GOPROXY|GOPRIVATE|GOSUMDB|GOMODCACHE' puis go mod download et go list -m all avant les suites de tests lourdes.

④ Checklist « citable » pour documents d’architecture

Latence du premier saut : lorsque le graphe compte de nombreux micro-modules, le TTFB du proxy domine — mesurez chaque hop avant d’augmenter le CPU du runner.

GOFLAGS=-mod=readonly empêche les go mod tidy implicites au milieu d’une PR sur des pipelines réglementés.

Marge disque : dimensionnez GOMODCACHE avec les caches conteneurs et artefacts pour que des jobs parallèles ne remplissent pas la racine système.

Synthèse

Choisissez un proxy auto-hébergé lorsque vous devez posséder le stockage, auditer les ZIP ou tamponner les pannes amont ; préférez une chaîne GOPROXY publique lorsque l’exploitation doit rester légère et que la sortie Internet est permise. Associez systématiquement GOPRIVATE et GONOPROXY, conservez GOSUMDB pour le code public, et ancrez GOMODCACHE (avec GOTMPDIR) sur des disques rapides pour chaque Mac distant de la flotte.

Pour monter des nœuds Apple Silicon avec bande passante prévisible et SSH prêt à l’emploi, ouvrez les pages accueil, achat, tarifs et le centre d’aide — consultation sans connexion obligatoire.

Ensuite : stabilisez la concurrence des pipelines avec la FAQ pool de builds et disque, puis revenez à l’index du blog pour d’autres playbooks CI.

Mac distant pour tirages Go modules et CI

Mac Mini dédiés, SSH, SSD rapide et sortie réseau stable pour enchaîner GOPROXY et caches modules. Parcourez tarifs, achat et aide sans créer de compte.