Public : pipelines Gradle / Maven sur Mac distant 2026, liaison transfrontalière et caches partagés. Ce guide livre une matrice miroirs, les chemins 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)

  1. Cache partagé : deux jobs dans le même ~/.gradle ou ~/.m2 sans préfixe → métadonnées et binaires incohérents.
  2. Trop de parallèle : --parallel ou mvn -T … sature le proxy ; resets TLS vus comme échecs de résolution.
  3. Profil SSH ≠ agent CI : settings.xml chargé 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.

SourceExemple d’endpointIntérêt 2026Attention
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

OutilVariable / chemin canoniqueRôleConvention 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
# Préambule shell — Mac distant / runner partagé (adapter CI_PIPELINE_ID) export GRADLE_USER_HOME="${HOME}/.gradle-ci-${CI_PIPELINE_ID:-local}" export MAVEN_OPTS="${MAVEN_OPTS:-} -Dmaven.repo.local=${HOME}/.m2-ci-${CI_PIPELINE_ID:-local}/repository" mkdir -p "$GRADLE_USER_HOME" "${HOME}/.m2-ci-${CI_PIPELINE_ID:-local}/repository" # Gradle : build avec parallélisme explicite (voir section suivante pour les seuils) ./gradlew --parallel clean build # Maven : threads « par cœur » plafonnés (exemple indicatif) mvn -B -T 1C -Dstyle.color=never verify

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.

OutilParamètreSeuil de départ indicatifPlafond 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

Checklist reproductible
  • Logger GRADLE_USER_HOME et dépôt Maven effectif ; échec immédiat si vide.
  • ./gradlew --version et mvn -v sous l’utilisateur du job, pas seulement en SSH.
  • Sonde curl vers le miroir avant dependencies ou go-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.

Mac distant & CI JVM 2026

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.

Accueil Forfait Mac distant Aide SSH & connexion
Runners JVM
Sortie réseau stable
Support 24/7