mcpField
L
limrun-bazel

limrun-bazel

github.com/limrun-incクラウド・DevOps226.7k 回インストール1 日前に更新
リポジトリ

limrun-bazel について

limrun-bazel は、Bazel ワークスペースを Limrun のリモートビルド環境に接続するスキルです。Apple または Android アプリのチーム向けに、設定、認証、ビルド、結果確認を扱います。

主な機能

  1. 01Limrun リモートビルド用の Bazel 設定
  2. 02Limrun の Mac で Apple アクションを実行
  3. 03Linux ワーカーで Android アクションを実行
  4. 04組織内で共有するリモートキャッシュ
  5. 05ビルド出力とキャッシュヒット率の確認

活用シーン

  1. 01Bazel ワークスペースでリモートビルドを設定
  2. 02CI で Apple または Android をビルド
  3. 03ローカルの Xcode や Android SDK なしでビルド
  4. 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 を再実行し、追加を承認してください。
  • リージョンごとにキャッシュが別々に保持されます: 新しいリージョンでの最初のビルドはキャッシュが空の状態から始まります。

コメント