在 brew install 中使用 GitHub 操作缓存

Fra*_*rzi 10 macos homebrew github-actions

我想使用 GitHub 操作缓存 ( actions/cache@v2) 来保存我的brew install命令的缓存,而不是一遍又一遍地重新下载所有依赖项。

这将使我的构建更快,我该如何实现?

Edw*_*ero 3

这很棘手,因为操作/缓存取决于您将库放入特定文件夹中,然后可以缓存和检索该文件夹。系统文件有很多依赖关系,这使得每个库在这个过程中都是独一无二的。

您可以采取以下三个选项来实现此目的

路径1:

我们可以考虑将brew包安装到特定文件夹中,但我们不能对每个包执行此操作,而是对整个操作系统执行此操作。但根据自制软件https://github.com/Homebrew/brew/blob/664d0c67d5947605c914c4c56ebcfaa80cb6eca0/docs/Installation.md#untar-anywhere,这不是一个好主意,因为软件包安装不正确可能会出现问题。此外,这基本上会缓存所有内容,最终我们不知道它是否会比仅安装您需要的最新软件包更快。

路径2:

像平常使用brew 一样安装软件包,然后复制二进制文件。这里需要注意的是,您需要在每个库的基础上执行此操作,因为有时依赖关系可能会失控。以下是在 GitHub Actions 工作流程中缓存 APT 包的示例 ,方法是在 Linux 中使用 apt-get 完成此过程,但您可以使用 brew 遵循相同的过程

路径3:

查找或创建您自己的 docker 文件映像,以便您保持最新的所需的最新软件包。这将允许您始终拥有最新版本,并且允许您从 docker 映像初始化容器构建内的步骤。这将满足您的系统依赖性。

 jobs:
   ci:
     runs-on: ubuntu-latest
     container:
       image: <your-personalized-docker-image>
Run Code Online (Sandbox Code Playgroud)