关于 limrun-bazel
limrun-bazel 是用于将 Bazel 工作区配置为使用 Limrun 远程构建平面的技能,面向 Apple 或 Android 应用团队,涵盖设置、身份验证、构建与结果查看。
主要功能
- 01配置 Bazel 使用 Limrun 远程构建
- 02在 Limrun Mac 上执行 Apple 操作
- 03在 Linux Worker 上执行 Android 操作
- 04组织内共享远程缓存
- 05查看构建输出和缓存命中率
适用场景
- 01为 Bazel 工作区设置远程构建
- 02在 CI 中执行 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 工作节点上运行,整个组织的所有构建共享一个远程缓存。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(即使 shell 中看不到它,也可能已经设置;请求他人协助前请先检查)。该助手只读取 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。命令会写入一个被 git 忽略的 .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并接受添加。 - **每个区域都有自己的缓存:**新区域中的首次构建会从空缓存开始。