Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在brew安装中使用GitHub操作缓存_Macos_Homebrew_Github Actions - Fatal编程技术网

Macos 在brew安装中使用GitHub操作缓存

Macos 在brew安装中使用GitHub操作缓存,macos,homebrew,github-actions,Macos,Homebrew,Github Actions,我想使用GitHub操作缓存(Actions)/cache@v2)以保存我的brew安装命令的缓存,而不是一次又一次地重新下载所有依赖项 这将使我的构建速度更快,我如何才能实现它?这是一个棘手的问题,因为操作/缓存取决于您将库放在一个特定的文件夹中,然后可以对其进行缓存和检索。系统文件有很多依赖项,这使得每个库在这个过程中都是唯一的 这里有三个选项可以用来完成这项任务 路径1: 我们可以考虑将brew软件包安装到特定的文件夹中,但我们不能针对每个软件包,而是针对整个操作系统。但是根据自制软件,这

我想使用GitHub操作缓存(
Actions)/cache@v2
)以保存我的
brew安装
命令的缓存,而不是一次又一次地重新下载所有依赖项


这将使我的构建速度更快,我如何才能实现它?

这是一个棘手的问题,因为操作/缓存取决于您将库放在一个特定的文件夹中,然后可以对其进行缓存和检索。系统文件有很多依赖项,这使得每个库在这个过程中都是唯一的

这里有三个选项可以用来完成这项任务

路径1:

我们可以考虑将brew软件包安装到特定的文件夹中,但我们不能针对每个软件包,而是针对整个操作系统。但是根据自制软件,这不是一个好主意,因为软件包安装不正确可能会出现问题。此外,这将基本上是缓存一切,在一天结束时,我们不知道它是否会比只安装您需要的最新软件包快

路径2:

按照通常使用brew的方式安装软件包,然后复制二进制文件。这里需要注意的是,您需要在每个库的基础上执行此操作,因为依赖关系有时会失控。 这里有一个例子 通过在linux中使用apt get完成此过程,但您可以使用brew执行相同的过程

路径3:

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

 jobs:
   ci:
     runs-on: ubuntu-latest
     container:
       image: <your-personalized-docker-image>
作业:
ci:
运行于:ubuntu最新版本
容器:
图片:

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

这里有三个选项可以用来完成这项任务

路径1:

我们可以考虑将brew软件包安装到特定的文件夹中,但我们不能针对每个软件包,而是针对整个操作系统。但是根据自制软件,这不是一个好主意,因为软件包安装不正确可能会出现问题。此外,这将基本上是缓存一切,在一天结束时,我们不知道它是否会比只安装您需要的最新软件包快

路径2:

按照通常使用brew的方式安装软件包,然后复制二进制文件。这里需要注意的是,您需要在每个库的基础上执行此操作,因为依赖关系有时会失控。 这里有一个例子 通过在linux中使用apt get完成此过程,但您可以使用brew执行相同的过程

路径3:

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

 jobs:
   ci:
     runs-on: ubuntu-latest
     container:
       image: <your-personalized-docker-image>
作业:
ci:
运行于:ubuntu最新版本
容器:
图片:

在工作流作业配置中:

步骤:
-名称:更新自制
运行:|
brew更新--预安装
cat“$(brew--存储库)/Library/Taps/homebrew/homebrew core/Formula/foo.rb”>.github/brew formulas
-名称:配置自制缓存
用途:行动/cache@v2
与:
路径:|
~/Library/Caches/Homebrew/foo--*
~/Library/Caches/Homebrew/downloads/*--foo-*
键:brew-${{hashFiles('.github/brew Formulas')}
还原密钥:brew-
-名称:安装自制依赖项
运行:|
env自制\u无\u自动\u更新=1 brew安装foo
这里的
~/Library/Caches/Homebrew
对应于
brew--cache
的输出

上面的配置将只存储与“foo”包相关的文件,而不是将整个目录存储到GitHub操作缓存中。这是因为GitHub提供的macOS映像上的Homebrew缓存目录已经包含基本Homebrew安装的文件(您无需再次存储)


您应该注意,此缓存不太可能加快您的工作流程。安装自制瓶子(默认设置)通常具有与从GitHub/Azure自己的存储缓存下载类似的性能,因为瓶子文件在bintray的CDN上提供。

在您的工作流作业配置中:

步骤:
-名称:更新自制
运行:|
brew更新--预安装
cat“$(brew--存储库)/Library/Taps/homebrew/homebrew core/Formula/foo.rb”>.github/brew formulas
-名称:配置自制缓存
用途:行动/cache@v2
与:
路径:|
~/Library/Caches/Homebrew/foo--*
~/Library/Caches/Homebrew/downloads/*--foo-*
键:brew-${{hashFiles('.github/brew Formulas')}
还原密钥:brew-
-名称:安装自制依赖项
运行:|
env自制\u无\u自动\u更新=1 brew安装foo
这里的
~/Library/Caches/Homebrew
对应于
brew--cache
的输出

上面的配置将只存储与“foo”包相关的文件,而不是将整个目录存储到GitHub操作缓存中。这是因为GitHub提供的macOS映像上的Homebrew缓存目录已经包含基本Homebrew安装的文件(您无需再次存储)

您应该注意,此缓存不太可能加快您的工作流程。安装自制瓶子(默认设置)通常具有类似的性能