Gitlab CI - 构建镜像并传递到下一阶段?

fis*_*eny 7 gitlab docker gitlab-ci

我正在尝试使用 Gitlab CI 和 PHP/Symfony 项目设置管道。我的.gitlab-ci.yml文件应包含 3 个阶段:

  • 构建 - 构建镜像、设置数据库、安装 Composer 等
  • 测试
    • 单元测试
    • 其他测试(代码质量、安全检查)

我现在让它按预期工作,但只能在每次测试的同时运行构建步骤 - 这意味着我要重复相同的构建步骤两次,并且花费的时间比应有的时间长。

我知道 GitLab 允许您构建 Docker 映像并将其存储在项目中,但目前是否有一种机制来构建 Docker 映像、存储它(作为工件?),然后将其传递到测试中阶段以便他们不需要重复构建?

Ste*_*tel 7

虽然使用注册表存储图像确实是推荐的方式,但您的问题有答案:

在该build阶段将图像保存为文件:

docker save -o myimage.tar myimage:build123

定义myimage.tar为工件,depends_on在后续阶段作业中使用并在那里加载图像:

docker load -i myimage.tar