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

ローカルビルドでのGradle向けbuild cacheの設定

Bitrise Build Cache は、ローカルの Gradle ビルドでも使用できます。ローカルビルドは CI ビルドと同じキャッシュを読み取るため、CI がすでにコンパイルしたタスクを自分のマシンで再度コンパイルする必要はありません。

Bitrise Build Cache CLI がセットアップを行います。Gradle の init スクリプトを ~/.gradle/init.d/ に書き込むため、プロジェクトファイルは変更されません。

手動で手順を進める代わりに、AIコーディングエージェントを使ってセットアップすることもできます。AIで始めるを参照してください。

開始する前にClick to copy link​

次のものを用意してください。

  • マシン上で動作する Gradle プロジェクト (macOS または Linux)。
  • Build Cache が有効になっている Bitrise workspace。Build Cache ページで確認できます。
  • マシンがファイアウォール、VPN、または送信プロキシの内側にある場合は、Build Cache が使用する Bitrise ホストへのネットワークアクセス。ファイアウォールと VPN のネットワークエンドポイントを参照してください。
ネイティブコードを含む Android プロジェクト

プロジェクトが C/C++ コード (NDK、JNI、またはネイティブモジュール) をビルドする場合は、Gradle と併せて ccache をセットアップしてください。Gradle プラグインは Java と Kotlin のタスク出力をキャッシュしますが、ネイティブのコンパイルはこれを経由せず、代わりに ccache を経由します。brew install ccache でインストールし、ウィザードで Gradle と ccache (C/C++) の両方を選択してください。

CLIのインストールClick to copy link​

Homebrew で CLI をインストールします (推奨)。

brew install bitrise-io/bitrise-build-cache/bitrise-build-cache

Homebrew を使用しない場合は、次のようにします。

curl --retry 5 -sSfL \
'https://raw.githubusercontent.com/bitrise-io/bitrise-build-cache-cli/main/install/installer.sh' \
| sh -s -- -b ~/.local/bin

インストール先が PATH に含まれていることを確認してから、インストールを確認します。

bitrise-build-cache --version

キャッシュの有効化Click to copy link​

対話型ウィザードを実行します。

bitrise-build-cache activate --interactive

ウィザードでは、次の項目が求められます。

  1. Sign in to Bitrise: 初回実行時に、認証のためブラウザーが開きます。CLI は認証情報を OS のキーチェーンに保存して自動的に更新するため、2回目以降はこの手順がスキップされます。使用可能なキーチェーンがないマシンでは、CLI は設定ファイルに保存する方法に切り替わります。
  2. Select a workspace: キャッシュを使用する workspace の Build Cache を選択します。アクセスできるものが1つだけの場合は、CLI が自動的に選択します。
  3. Which build tools should I set up: Gradle が選択されていることを確認してください。プロジェクトがネイティブコードをビルドする場合は、ccache (C/C++) も選択します。スペースキーでオプションを切り替え、Enter キーで確定します。
  4. Cache for all projects, or only opted-in ones?: このマシン上に複数のプロジェクトがあり、一部のプロジェクトだけでキャッシュを使用したい場合を除き、デフォルトの Always のままにします。プロジェクトごとのキャッシュスコープを参照してください。
  5. Display name for this machine's local invocations: Build Cache ダッシュボードにローカルビルドが表示される名前です。例: local-<yourhandle>。
  6. Enable cache push: デフォルトの Yes, push too のままにします。キャッシュプッシュモードを参照してください。
  7. Keep the cache proxies running in the background: ccache をセットアップする場合は、Yes, install + start を選択します。これにより、ヘルパープロセスが OS に登録され、シェルを再起動しても動作し続けます。
Environment Variables take precedence

BITRISE_BUILD_CACHE_AUTH_TOKEN と BITRISE_BUILD_CACHE_WORKSPACE_ID がシェルですでに設定されている場合、CLI は保存された認証情報の代わりにそれらを使用します。サインインを反映させたい場合は、これらを unset してください。

セットアップの確認Click to copy link​

CLI のヘルスチェックを実行します。

bitrise-build-cache doctor

認証情報、バックエンドへの接続、ヘルパープロセス、ログディレクトリなど、ローカルセットアップのすべての項目の状態が報告され、最後に全体の判定が表示されます。

Bitrise Build Cache - doctor
CLI version: 3.x.y

Healthy:
✓ auth OAuth login (keychain) (workspace <id>), token valid until <iso-timestamp>
✓ keychain-smoke Set/Get/Delete round-trip OK
✓ auth-backend latency <ms>, source=keychain, workspace=<id>
✓ project-scope mode=always; cache_push=true (machine config); no .bitrise-build-cache.json found in <cwd> or parents.; would gate this directory: no
✓ ccache-binary found at /opt/homebrew/bin/ccache
✓ ccache-helper running (~/.local/state/ccache/ccache.sock)
✓ log-dirs all log dirs present + writable

Overall: ok

CLI が自動的に修復できる問題を修復するには、bitrise-build-cache doctor --fix --interactive を実行します。

ビルドの実行Click to copy link​

  1. まずプロジェクトのローカルビルド出力をクリーンアップし、ビルドがリモートキャッシュから取得するようにします。--no-daemon も指定してください。有効化の前に起動した Gradle デーモンは、新しい設定を読み込まないためです。

    cd path/to/your/gradle/project
    ./gradlew clean --no-daemon
  2. ビルドを実行します。

    ./gradlew :app:assembleDebug

ウォームキャッシュにヒットしたビルドは、次のように終了します。

> Task :app:compileDebugKotlin FROM-CACHE
> Task :feature:one:compileDebugKotlin FROM-CACHE

BUILD SUCCESSFUL in 18s
149 actionable tasks: 71 executed, 78 from cache

[Bitrise Analytics] 155 tasks uploaded. Check invocation at
https://app.bitrise.io/build-cache/invocations/gradle/<uuid>

動作の確認Click to copy link​

シグナル確認場所成功時の状態
Task :module:name FROM-CACHEGradle のビルド出力 (タスクごと)タスクの行が FROM-CACHE で終わる
N actionable tasks: X executed, Y from cacheGradle のビルドサマリーfrom cache の件数が0以外
Invocation linkビルドの最後に出力されるビルドのタスクごとのメトリクスが開く
DashboardBuild Cache ページ表示名の下に行が表示される
Init script~/.gradle/init.d/bitrise-build-cache.init.gradle.ktsファイルが存在し、buildCache { を含んでいる

キャッシュプッシュモードClick to copy link​

このガイドのセットアップでは、キャッシュプッシュを有効にして Build Cache を有効化します。ローカルビルドは共有キャッシュからの読み取りと書き込みの両方を行います。マシンがビルドしたすべてのタスクが、チームメンバーや CI が再利用できるエントリになり、アクティビティは Build Cache ページに表示されます。

ローカルビルドでキャッシュの読み取りだけを行いたい場合は、後述のプルのみモードの選択を参照してください。

プルのみモードの選択Click to copy link​

チームがすでに CI からキャッシュを蓄積していて、ローカルビルドでは読み取りだけを行いたい場合は、キャッシュプッシュをオフにします。ただし、ローカルビルドは何も提供しないため、CI がまだ実行されていない場合、サマリー行は 0 from cache のままになります。

bitrise-build-cache activate --interactive を再実行し、キャッシュプッシュのプロンプトで No, pull only と答えるか、非対話型の activate コマンドを実行します。

bitrise-build-cache activate gradle --cache --cache-push=false

ビルドが期待どおりに動作しない場合は、デバッグログを有効にして activate を再実行してください。

bitrise-build-cache activate gradle --cache --cache-push=false --debug

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

まず CLI のヘルスチェックを実行します。ローカルセットアップのすべての項目を検査し、自動的に修復できる問題を修復します。

bitrise-build-cache doctor --fix --interactive

それでも問題が解決しない場合は、次の表を確認してください。

問題対処方法
ウィザードがターミナルを必要とすると報告する行ベースモードにするには TERM=dumb bitrise-build-cache activate --interactive を実行します。
doctor が修復できない問題を報告する詳細な情報を表示するには --debug を付けて再実行します。
ビルドが新しい設定を無視する実行中の Gradle デーモンを ./gradlew --stop で停止するか、--no-daemon を指定します。
最初からやり直したいウィザードは再実行しても問題ありません。現在の状態を読み直し、同じ有効化を再度適用します。
ビルドがキャッシュに到達できない、またはキャッシュ呼び出しがタイムアウトするVPN、ファイアウォール、またはプロキシが Bitrise ホストをブロックしている可能性があります。ファイアウォールと VPN のネットワークエンドポイントと照らし合わせて確認してください。