mcpField
L
limrun-bazel

limrun-bazel

github.com/limrun-inc云与 DevOps226.7k 次安装1 天前更新
代码仓库

关于 limrun-bazel

limrun-bazel 是用于将 Bazel 工作区配置为使用 Limrun 远程构建平面的技能,面向 Apple 或 Android 应用团队,涵盖设置、身份验证、构建与结果查看。

主要功能

  1. 01配置 Bazel 使用 Limrun 远程构建
  2. 02在 Limrun Mac 上执行 Apple 操作
  3. 03在 Linux Worker 上执行 Android 操作
  4. 04组织内共享远程缓存
  5. 05查看构建输出和缓存命中率

适用场景

  1. 01为 Bazel 工作区设置远程构建
  2. 02在 CI 中执行 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 工作节点上运行,整个组织的所有构建共享一个远程缓存。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 并接受添加。
  • **每个区域都有自己的缓存:**新区域中的首次构建会从空缓存开始。

评论

支持 Markdown