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

5

我使用预安装的Bazel在GitHub Actions上构建代码。Bazel具有在文件系统上缓存步骤以跳过后续构建工作的能力。

但是,我该如何在GitHub Actions中保存此缓存以供后续工作流运行使用呢?


你可以使用 https://github.com/actions/cache 来进行一般的缓存。根据你使用的具体操作,可能会有其他配置缓存的方法。 - jonrsharpe
...这就是我所询问的。 - sdgfsdh
阅读 https://docs.github.com/en/actions/advanced-guides/caching-dependencies-to-speed-up-workflows 等相关文档。如果您还有问题,请[编辑]以澄清在您的情况下应用此方法时遇到的具体问题(例如,如果您使用其他操作,它们是什么?) - jonrsharpe
Bazel的缓存与其他构建系统不同,因为它们包含一个内容可寻址存储库,可以从所有工作流中增长,而不是按键分区。因此,我的问题是针对Bazel和GitHub Actions的。 - sdgfsdh
你看过TensorFlow是怎么做的吗?他们使用GCP存储桶进行缓存:https://github.com/tensorflow/io/pull/1287 - rethab
谢谢@rethab,如果可能的话,我想使用GitHub提供的5GB缓存! - sdgfsdh
2个回答

2
使用缓存操作,例如: ```

使用缓存操作,例如:

```
jobs:
  build_and_test_ubuntu:
    name: Linux Ubuntu 20.04 Bazel build <GCC 9.3.0>
    runs-on: ubuntu-20.04
    
    steps:
    - uses: actions/checkout@v3

    - name: Mount bazel cache
      uses: actions/cache@v3
      with:
        path: "/home/runner/.cache/bazel"
        key: bazel

    - name: Build and Test
      run: |
        bazel build //...
        bazel test //...

1
显然这并不是很简单的问题,请参见 https://github.com/actions/cache/pull/575/files 上的讨论,了解适当的 key 是什么... - vorburger

1
你需要通过.bazelrc设置Bazel缓存代理(就像在本地做的那样),并将缓存内容托管在S3或GCS上。
对于开源项目,你可以尝试使用BuildBuddy来获得更好的体验。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接