limrun-bazel について
limrun-bazel は、Bazel ワークスペースを Limrun のリモートビルド環境に接続するスキルです。Apple または Android アプリのチーム向けに、設定、認証、ビルド、結果確認を扱います。
主な機能
- 01Limrun リモートビルド用の Bazel 設定
- 02Limrun の Mac で Apple アクションを実行
- 03Linux ワーカーで Android アクションを実行
- 04組織内で共有するリモートキャッシュ
- 05ビルド出力とキャッシュヒット率の確認
活用シーン
- 01Bazel ワークスペースでリモートビルドを設定
- 02CI で Apple または Android をビルド
- 03ローカルの Xcode や Android SDK なしでビルド
- 04ビルド状況とキャッシュ性能を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ limrun-inc/ skills --skill limrun-bazelインストール後、Claude Code で/limrun-bazelを入力して読み込まれたか確認します。
詳細
Limrun のビルドプレーンでの Bazel
lim bazel setup は、Bazel ワークスペースを Limrun のビルドプレーンに接続します。Apple アクションは Limrun の Mac で、Android アクションは Limrun の Linux ワーカーで実行され、組織内のすべてのビルドで 1 つのリモートキャッシュを共有します。Bazel はこれまでと同じ環境で実行されます。リモートアクションには、ローカルの Xcode や Android SDK は必要ありません。
認証と CLI
npm でインストールします:npm install --global lim(0.44.0 以降)。npm パッケージは、Bazel が呼び出す認証情報ヘルパー lim-bazel-credentials もインストールします。スタンドアロンの tarball と DotSlash ビルドではこのヘルパーが PATH に追加されないため、Bazel はそれらを使って認証できません。認証には lim login または LIM_API_KEY を使います(シェルに表示されなくても設定済みの場合があります。確認してから問い合わせてください)。このヘルパーが読み取るのは lim login または LIM_API_KEY のみで、--api-key で渡されたキーは読み取りません。CLI が信頼できる情報源です。フラグでエラーが発生した場合は、推測せず lim bazel setup --help を確認してください。
セットアップ
ワークスペース内で実行します(MODULE.bazel があるディレクトリまで上の階層をたどります):
lim bazel setup
Bazel 8 以降と、ルートの MODULE.bazel にある rules_apple または rules_android が必要です。gitignore 対象の .limrun/ を作成し、--config=limrun 設定を格納して、.bazelrc に try-import を追加します。秘密情報は一切書き込まれません。Bazel は認証情報ヘルパーに短時間有効なトークンを要求します。
- リージョン: セットアップでは、ビルドプレーンが稼働している最も近いリージョンが選ばれます。
--region <name>でリージョンを指定できます。 - Android: Linux ワーカーには、ルートの
MODULE.bazelにrules_cc、rules_java、protobuf、hermetic_android_toolchainsが必要です。セットアップでは不足している行が表示され、追加するか尋ねられます。--yesを指定すると、確認なしで追加されます。ターミナルがなく、--yesも指定されていない場合は停止して行を表示するため、スクリプトや CI では--yesを指定してください。 - Java ランタイム:
.bazelrcにすでに--java_runtime_versionがある場合はそのまま使用されます。ない場合、limrun の設定ではremotejdk_17が使われます。 - CLI のアップグレード後、またはワークスペースで Apple ルールや Android ルールを使い始めたときは、セットアップを再実行してください。
.limrun/を手動で編集しないでください。
ビルド
bazel build --config=limrun //your:target
ビルドアクションはリモートで実行され、Bazel がダウンロードするのは最上位の出力(.apk または .ipa)のみです。--config=limrun を指定しない場合、Bazel は従来どおりビルドします。limrun 用の独自フラグは、ワークスペースのルートにある user.limrun.bazelrc に記述します。生成された設定ではこのファイルが最後にインポートされ、セットアップを再実行しても保持されます。
CI では、npm から lim をインストールし、LIM_API_KEY をシークレットとして設定して、lim bazel setup --yes を実行した後、--config=limrun を指定してビルドします。
アプリを実行する
シミュレーターまたはエミュレーター向けにビルドした後、Bazel が出力する .ipa または .apk のパスをインストールします:
lim ios create && lim ios sync bazel-bin/App/App.ipa
lim android create && lim android install-app bazel-bin/app/app.apk
ビルドのたびに lim ios sync を再実行してください。差分のみが送信されます。実行中のアプリを操作するには、limrun-ios-simulator または limrun-android-emulator を使用します。
結果を確認する
コンソールの Bazel ページ(https://console.limrun.com/bazel)には、すべてのリージョンにおける組織のビルドが一覧表示されます。実行中のビルドではリアルタイム出力が表示され、ビルドごとのリモートキャッシュヒット率も確認できます。
ビルドが失敗した場合
- Bazel が認証できない、または認証情報ヘルパーのエラーが報告される場合:
lim-bazel-credentialsがPATHにあること(npm でインストール)と、Bazel の実行環境でlim loginまたはLIM_API_KEYが設定されていることを確認してください。 - 「the build plane could not start a worker」または「no linux worker is free」:一時的な容量不足です。ビルドを再試行してください。
@androidsdkが見つからない、または Android ツールチェーンのエラーが発生する場合:MODULE.bazelの行が不足しています。lim bazel setupを再実行し、追加を承認してください。- リージョンごとにキャッシュが別々に保持されます: 新しいリージョンでの最初のビルドはキャッシュが空の状態から始まります。