コトリン設定と依存関係解決管理でミラー鎖を揃えてもプラグインとライブラリの順序ズレが取得を揺らします。並列ワーカ・キャッシュ鍵・ロック検収を決定表と実行値で一枚化しました。ホーム・技術ブログ一覧・ココアポッズ実務・えすぴーえむ決定表と併読ください。
越境取得ボトルネック
1
順序:社内庫と鏡混在でヘッダ欠落。
2
並列:--parallel と多重でデーモン落ち。
3
鍵:ブランチ名のみでキャッシュ外れ。
決定マトリクス
| 場面 | ミラー | 並列 |
|---|---|---|
| 単発 | 公開二段 | 半数 |
| 本番 | 社内先頭 | 四分の三上限 |
早引き:ジョブ同時を先に抑え鍵を固定。
settings.gradle.kts ミラー鎖
プラグインと依存で順序同一、社内先頭。
コピペ断片
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
maven { url = uri("https://INTERNAL/maven") }
maven { url = uri("https://CORP_MIRROR/central") }
mavenCentral(); google()
}
}
pluginManagement {
repositories {
maven { url = uri("https://INTERNAL/plugins") }
gradlePluginPortal()
}
}
並列・gradle.properties
--parallelは多重ジョブと積算しメモリ七割目安。
コピペ:gradle.properties
org.gradle.parallel=true
org.gradle.workers.max=4
org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8
systemProp.http.connectionTimeout=60000
systemProp.http.socketTimeout=120000
systemProp.org.gradle.internal.http.retryCount=5
| 項目 | 初期 |
|---|---|
| ワーカ | 半数〜四分の三 |
| ヒープ | 六ギガバイト前後 |
リモートキャッシュ鍵
GRADLE_USER_HOMEをジョブ単位で隔離し鍵にロック系列を含めパイプライン名のみは避ける。
| 素子 | 扱い |
|---|---|
| ロックファイル群 | 含める(取得固定) |
| ブランチ名のみ | 避ける(肥大で外れ続ける) |
退避・ロック五手順
1
週次クリーンで単路確認。
2
四・十二・三十・九十秒退避でワーカ絞り。
3
ロック差分は二名レビュー。
4
検証タスクを前置ゲートへ。
5
ヒット率ログ保全。
シェル断片
export GRADLE_USER_HOME="${GRADLE_USER_HOME:-$PWD/.gradle-$CI_JOB_ID}"
for attempt in 1 2 3 4 5; do
./gradlew --parallel --max-workers="${MAX_WORKERS:-4}" build \
-Dorg.gradle.internal.repository.max.tentatives=5 && exit 0
case "$attempt" in 1) sleep "${B1:-4}";; 2) sleep "${B2:-12}";; 3) sleep "${B3:-30}";; 4) sleep "${B4:-90}";; *) exit 1;; esac
done
まとめと次の一手
ミラー鎖・並列・鍵・ロック・退避を一体設計しリモート実機で実測。
引用
- ワーカ四分の三・多重半数
- ヒープ六ギガ・メタ五百十二
- 再試行五回上限