You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions中维护Bazel构建缓存?

在GitHub Actions中复用Bazel构建缓存的方法

Bazel默认将所有构建产物和中间步骤缓存存放在~/.cache/bazel目录下,你可以借助GitHub官方的缓存Action实现跨工作流运行的缓存复用,具体操作方法如下:

核心实现步骤

  • 构建任务执行前,先恢复之前保存的Bazel缓存
  • 执行正常的Bazel构建命令,Bazel会自动识别已有缓存,跳过已完成的构建步骤
  • 构建完成后,将本次新增的缓存内容上传保存,供后续工作流运行使用

完整工作流配置示例

name: Bazel 构建工作流
on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4

      - name: 恢复Bazel构建缓存
        uses: actions/cache@v4
        with:
          path: ~/.cache/bazel
          # 缓存键配置:包含操作系统、依赖配置、构建配置的哈希值,配置无变化即可完全命中缓存
          key: ${{ runner.os }}-bazel-${{ hashFiles('WORKSPACE', '**/*.bzl', '**/BUILD.bazel') }}
          # 完全匹配不到缓存时,回退到同操作系统下的最新Bazel缓存做增量更新
          restore-keys: |
            ${{ runner.os }}-bazel-

      - name: 执行Bazel构建
        run: bazel build //...

配置说明

  • 不需要额外缓存工作区下的bazel-*软链接目录,所有实际缓存内容都已存放在~/.cache/bazel中,重复缓存只会浪费存储空间
  • 缓存键的哈希匹配规则可以根据你的项目灵活调整,比如你有自定义的依赖配置文件,也可以加入hashFiles的匹配列表
  • 配置回退规则后,即使构建配置有修改,也可以基于旧缓存做增量更新,无需从零开始构建

注意事项

  • 如果你有构建前清理的步骤,请放在缓存恢复步骤之后执行,避免误删已恢复的缓存
  • Bazel版本更新后缓存会自动失效,新版Bazel会使用不同的缓存目录结构,不需要额外修改缓存键配置

内容的提问来源于stack exchange,提问作者sdgfsdh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:15:03