メインコンテンツまでスキップ

Gradleの設定キャッシュ

Gradle configuration cache は、Gradle プロジェクトの configuration フェーズの結果をキャッシュし、以降のビルドで再利用することで、ビルド時間を短縮します。詳細については、Gradle の公式ドキュメントを参照してください。Bitrise Build Cacheは、Gradle 8.6 以降でこの機能をサポートしています。

configuration cache の設定Click to copy link​

configuration cache を設定するには、次の手順を実行します。

  1. Bitrise Build Cacheのサブスクリプションまたはトライアルがあることを確認します。

  2. --configuration-cache フラグを付けてローカルでビルドを実行します。

    これにより、Gradle プロジェクトが configuration caching をサポートしていることを確認できます。Gradle の設定で configuration caching を有効にするには、Gradle の公式ガイドを参照してください。

  3. Gradle 暗号化キーを生成します。

    openssl rand -base64 16
  4. キーを Bitrise project の Secret として GRADLE_ENCRYPTION_KEY という名前で保存します。

    これにより、configuration cache の暗号化された値が、異なるビルド間でも同じままになります。固定の暗号化キーは Gradle バージョン 8.6 以降でサポートされています。Bitrise は、それ以前の Gradle バージョンでは Gradle configuration cache をサポートしていません。

  5. Build Cache for Gradle Step を Workflow に追加します。

    Step のバージョンは 2.7.7 以降である必要があります。Step を以降に更新すると、configuration cache が一度だけ無効になります。この場合は、再ビルドして問題を解決してください。

    認証トークン

    Step バージョン 3.6.1 以降では、Gradle プラグインは実行中のビルドのトークンで認証を行うため、configuration cache 用に認証トークンを設定する必要はありません。

    それ以前の Step バージョンでは、トークンが cache された configuration の一部となるため、ビルド間で同じである必要があります。これらのバージョンでは、workspace API トークンを Secret として BITRISE_BUILD_CACHE_AUTH_TOKEN キーで保存し、workspace slug を BITRISE_BUILD_CACHE_WORKSPACE_ID という名前の Environment Variable として設定する必要があります。workspace API トークンは特定の個人に紐づかないため、担当者のロールが変わったり退職したりしても、キャッシュされた configuration は有効なままです。

  6. Workflow 内の Gradle の呼び出しの前に、Restore Gradle configuration cache と Restore Gradle Cache Steps を追加します。

    Steps は、キャッシュされた configuration データを取得し、configuration cache が参照するアーティファクトにアクセスできるようにします。

    Configuration cache ディレクトリ

    Restore Gradle configuration cache Step は、データを ./.gradle/configuration-cache ディレクトリに保存します。これは、Configuration cache directory 入力を変更することで上書きできます。

    たとえば、Android Build を使用して Gradle プロジェクトをビルドする場合、この 2 つの Steps を Workflow 内でその前に配置する必要があります。

  7. Workflow 内の Gradle の呼び出しの後に、Save Gradle configuration cache と Save Gradle Cache Steps を追加します。

    Steps は、configuration データをキャッシュに保存し、configuration cache が参照するアーティファクトを保存します。

  8. Enable the Save Gradle Cache Step の Save transforms 入力に対して設定します。Step バージョン 1.4.1 以降が必要です。

Gradle configuration cache ログの保存Click to copy link​

Gradle のビルドログには、configuration cache が再利用されなかった理由に関する情報が含まれている場合があります。このログは、ビルドの Artifacts ページに保存できます。

  1. Enable the --info ログレベルを Gradle で設定します。
  2. Deploy to Bitrise.io Step を Workflow に追加します。
  3. Deploy directory or file path 入力に、Gradle が出力するファイルパスを設定します。

デプロイされたファイルは、Artifacts ページで確認できます。Bitrise CI を開き、プロジェクトを選択してからビルドを選択し、Artifacts タブを選択します。

configuration cache のトラブルシューティングClick to copy link​

ビルドで configuration cache が再利用されない場合は、考えられる問題をいくつか確認できます。

一般的なトラブルシューティングClick to copy link​

  • 依存関係のキャッシュを利用するには、Save/Restore Gradle cache Steps を追加してください。Gradle configuration cache は、存在している必要があるアーティファクトを参照します。
  • configuration cache が完全に適用され再利用されるまでに、複数回の実行が必要になる場合があります。
  • Gradle のログを確認して、Gradle が configuration cache を再利用しなかった理由を調べてください。gradle configuration cache log を保存して、ビルドのアーティファクトに含めることができます。
  • Build Cache for Gradle Step を更新すると、configuration cache が一度だけ無効になります。別のビルドを実行して問題を解決してください。
  • Step バージョン 3.6.1 より前では、認証トークンがすべてのビルドで同じであることを確認してください。ビルド間でトークンが変わると、キャッシュされた configuration が無効になります。

Failed to instrument class エラーClick to copy link​

ビルドが次のエラーで失敗する場合があります。

org.gradle.internal.operations.BuildOperationInvocationException: Failed to instrument class io/bitrise/gradle/cache/BitriseBuildCache in ClassLoaderScopeIdentifier.Id{coreAndPlugins:init-file:/root/.gradle/init.d/bitrise-build-cache.init.gradle.kts(export)}

この問題を修正するには、次の手順を実行します。

  1. Save Gradle cache Step で、Save transforms 入力を true に設定します。

    バージョン要件

    この入力は、バージョン 1.4.1 以降でのみ使用できます。

  2. Restore Gradle cache Step を使用せずにビルドを実行して、保存を強制します。