GRADLE_USER_HOME et .m2, des seuils --parallel et -T, puis timeouts et retry 2s / 4s / 8s côté orchestrateur ; chaque bloc se relit seul en runbook. Entrées sans login : accueil, blog, cache Git & npm.
① Goulots typiques sur runner Mac distant (JVM / CI 2026)
- Cache partagé : deux jobs dans le même
~/.gradleou~/.m2sans préfixe → métadonnées et binaires incohérents. - Trop de parallèle :
--paralleloumvn -T …sature le proxy ; resets TLS vus comme échecs de résolution. - Profil SSH ≠ agent CI :
settings.xmlchargé en interactif mais pas par l’utilisateur du runner.
② Matrice miroirs et endpoints : Nexus, Artifactory, Central
Formes d’URL indicatives ; adaptez l’hôte à votre miroir d’entreprise ou région.
| Source | Exemple d’endpoint | Intérêt 2026 | Attention |
|---|---|---|---|
| Repo Maven Central (direct) | https://repo.maven.apache.org/maven2/ |
Simplicité, catalogue complet public | Traversées transfrontalières sensibles ; quotas implicites si beaucoup de petits GET |
| Sonatype Nexus / JFrog Artifactory | https://nexus.entreprise.example/repository/maven-public/ |
Cache d’organisation, politique d’ingestion, scans | Certificat interne, NO_PROXY à aligner avec HTTPS_PROXY |
| Miroir géographique tiers | URL fournie par votre hébergeur ou région | Réduit RTT lorsque Central est lointain | Vérifiez fraîcheur et politique de rétention ; documentez le repli vers Central |
| Gradle Plugin Portal | https://plugins.gradle.org/m2/ |
Plugins publiés hors Central | À traiter comme un second hop réseau ; combinez avec le même proxy/miroir si possible |
Règle : dépôt interne d’abord dans settings.xml et repositories Gradle ; purgez le cache disque après changement d’URL.
③ Chemins de cache : GRADLE_USER_HOME, .m2 et préfixes CI
| Outil | Variable / chemin canonique | Rôle | Convention Mac distant |
|---|---|---|---|
| Gradle | GRADLE_USER_HOME (défaut ~/.gradle) |
caches/modules-2, caches/transforms-3, daemons |
Ex. $HOME/.gradle-ci-${CI_PIPELINE_ID:-local} pour isoler les jobs |
| Maven | ~/.m2/repository ou <localRepository> |
Artefacts résolus et métadonnées | Pointer localRepository vers un SSD du runner avec préfixe job |
Si le disque dépasse 85 %, nettoyez les préfixes de jobs terminés pour préserver le débit d’écriture du cache Maven.
④ Parallélisme : --parallel, max workers et threads Maven
Plus de parallèle ⇒ plus de connexions HTTP ; sur WAN, partez bas puis augmentez après mesure.
| Outil | Paramètre | Seuil de départ indicatif | Plafond pratique |
|---|---|---|---|
| Gradle | org.gradle.parallel=true + ./gradlew --parallel |
Activer si modules indépendants | ./gradlew --max-workers=N avec N = min(4, cœurs physiques) sur Mac 8–12 Go ; monter prudemment sur 24 Go+ si le disque suit |
| Gradle tests | maxParallelForks |
2 sur petit nœud | Limiter selon la RAM restante pour le daemon Gradle |
| Maven | mvn -T 1C ou -T 4 |
1C lorsque le proxy limite les sockets |
-T 4 à -T 1C selon charge disque ; réduire si 429 ou resets TCP |
⑤ Timeouts HTTP, retries et backoff orchestrateur
Référence chiffrée : trois tentatives orchestrateur, backoff 2 s / 4 s / 8 s ; timeouts transport de départ souvent 120 s (monter à 300 s pour grosses résolutions). Gradle : systemProp.org.gradle.internal.http.connectionTimeout et socketTimeout en ms dans gradle.properties ; --no-daemon en CI si le daemon ignore les props. Maven : aether.connector.connectTimeout et requestTimeout dans un profil settings.xml. Exemple boucle : for i in 1 2 3; do ./gradlew --no-daemon dependencies && break || sleep $((2**i)); done.
⑥ Checklist avant le premier build vert
- Logger
GRADLE_USER_HOMEet dépôt Maven effectif ; échec immédiat si vide. ./gradlew --versionetmvn -vsous l’utilisateur du job, pas seulement en SSH.- Sonde
curlvers le miroir avantdependenciesougo-offline. - Artefact : dernières lignes de log pour éviter un nouveau diagnostic SSH.
⑦ FAQ : cache Gradle, threads Maven, daemon
Checksum / cache : après coupure réseau, purgez le sous-arbre du module dans caches/modules-2 ou tout le préfixe CI avant de relancer.
-T 1C lent : normal si le proxy limite les sockets ; n’augmentez -T qu’après un taux de succès stable.
systemProp ignorés : daemon résiduel → --no-daemon ou ./gradlew --stop en CI.
Synthèse : caches préfixés par pipeline, miroirs ordonnés, parallélisme plafonné, retries bornés. Accueil, achat forfait Mac distant, aide SSH / VNC — sans connexion obligatoire.
Poursuivre sans friction : pages publiques uniquement
Découvrez l’offre MacPull, réservez un nœud Apple Silicon pour vos pipelines Gradle/Maven, puis ouvrez le centre d’aide pour la connexion SSH et VNC — le tout en navigation libre, sans compte requis sur ces pages.