コンテンツへスキップ

Gradleキャッシュ

Tuistは、Gradleの組み込みビルドキャッシュと連携してビルド成果物をリモートで共有するGradleプラグインを提供します。タスクの出力がすでにキャッシュされている場合、Gradleは実行をスキップし、Tuistのリモートキャッシュから結果を取得するため、チーム全体およびCI環境でのビルド時間を短縮できます。

Tuist Gradleプラグインをインストールしたら、gradle.propertiesファイルでGradleのビルドキャッシュを有効にする必要があります。

plaintext
org.gradle.caching=true

これを設定しないと、リモートキャッシュが構成されていてもGradleはビルドキャッシュサブシステムを活性化せず、すべてのタスクがキャッシュのヒットや登録なしに実行されます。有効にすると、GradleはTuistをリモートビルドキャッシュとして使用し、キャッシュヒット時にキャッシュされたタスク出力をダウンロードし、タスク実行後にアップロードします。

キャッシュアップロードポリシー#

デフォルトでは、プラグインはリモートキャッシュへの成果物のダウンロードとアップロードの両方を行います。buildCacheブロック内のpushオプションでアップロードを制御できます。

kotlin
tuist {
buildCache {
push = false // read-only mode
}
}

一般的なパターンとしては、ビルドが再現可能なCIからのみ成果物をプッシュし、ローカル環境は読み取り専用にすることです。

kotlin
tuist {
buildCache {
push = System.getenv("CI") != null
}
}

この設定により、ローカルビルドはアップロードなしでキャッシュされた成果物の恩恵を受け、CIビルドはチームの他のメンバーのためにキャッシュに登録します。

継続的インテグレーション#

CI環境では、認証ガイドに記載されている方法のいずれかを使用して認証してください。プロバイダー固有のCI例については、継続的インテグレーションガイドを参照してください。

ローカルビルドキャッシュの無効化#

Gradleはローカルビルドキャッシュとリモートビルドキャッシュの両方を維持します。ローカルビルドキャッシュは、~/.gradle/caches/build-cache-1以下のディスク上にタスク出力を保存します。

Tuistをリモートビルドキャッシュとして構成する場合、CIではローカルビルドキャッシュを無効にすることを推奨します。これにより、CIランナー上に冗長な成果物が保存されるのを防ぎ、ビルドが常にチームの他のメンバーのために新しいエントリでリモートキャッシュに登録されることを保証します。

settings.gradle.ktsでCI上のGradleローカルビルドキャッシュを無効にします。

kotlin
buildCache {
local {
isEnabled = System.getenv("CI") == null
}
}

これにより、ローカル開発ではローカルビルドキャッシュを利用可能にしつつ、Tuistのリモートキャッシュが成果物の共有を担当するCI上ではこれを無効にします。

構成リファレンス#

buildCacheブロックは以下をサポートします。

オプション型デフォルト説明
enabledBooleantrueリモートビルドキャッシュを有効にするかどうか。
pushBooleantrueタスク出力をリモートキャッシュにアップロードするかどうか。
allowInsecureProtocolBooleanfalse安全でないHTTP接続を許可するかどうか。