在文件中gitlab-ci
有一个选项可以在.gitlab-ci.yml
任何实际脚本运行之前执行命令,称为before_script
. .gitlab-ci.yml
示例说明在此处安装辅助程序。但是,我注意到的是,当使用 docker 执行器时,这些更改不会缓存在 Docker 中。我天真地假设在运行这些命令之后,docker 会缓存图像,因此在下一次运行或测试时,docker 只会加载before_script
. 这将大大加快构建速度。
例如,我的.gitlab-ci.yml
看起来有点像:
image: ubuntu
before_script:
- apt-get update -qq && apt-get install -yqq make ...
build:
script:
- cd project && make
一个可能的解决方案是转到运行器机器并创建一个 docker 映像,该映像可以构建我的软件而无需任何其他安装,然后image
在 yaml 文件的部分中引用它。这样做的缺点是,每当我想添加依赖项时,我都需要登录到运行器机器并在构建成功之前更新映像。如果我只需将依赖项添加到末尾apt-get install
并让 docker / gitlab-ci 处理适当的缓存,那就更好了。
中还有一个cache
命令.gitlab-ci.yml
,我尝试将其设置为untracked: true
,我认为它会缓存不是我项目副产品的所有内容,但它似乎没有任何效果。
有没有办法得到我想要的行为?