如何在CI脚本作业之前重builddock上的docker映像

我想在GitLab CI脚本中生成Dockerfile并构build它。 然后在构build作业中使用这个新生成的图像。 我怎样才能做到这一点? 试过使用全局的before_script,但它已经在默认的容器中启动。 我需要从任何容器中做这个。

before_script在每个作业之前运行,所以它不是你想要的。 但是,您可以首先完成映像构build,并利用每个作业都可以使用不同的Docker映像的优势。 手册中介绍了图像的构build。

选项A(呃…sorting)

有2个跑步者,一个带壳执行器(标签 ),一个带有Docker执行器(标签docker )。 然后,您将有一个第一阶段的工作,致力于build立docker形象。 它会使用shell runner。

 image_build: stage: image_build script: - # create dockerfile - # run docker build - # push image to a registry tags: - shell 

然后第二项工作将使用docker执行者使用runner并使用此创build的映像:

 job_1: stage: test image: [image you created] script: - # your tasks tags: - docker 

问题在于跑步者需要成为具有安全意义docker组的一部分。

选项B(更好)

第二个选项会做同样的事情,但只有一个使用Docker执行程序的运行程序。 Docker镜像将在一个正在运行的容器( gitlab / dind:latest image)=“ docker in docker ”解决scheme中构build

 stages: - image_build - test image_build: stage: image_build image: gitlab/dind:latest script: - # create dockerfile - # run docker build - # push image to a registry job_1: stage: test image: [image you created] script: - # your tasks