Gitlab CI中的各个阶段之间是否有可用的容器

时间:2019-05-03 01:48:50

标签: gitlab gitlab-ci

在下一阶段是否可以访问在构建阶段使用的容器?我有这样的Yaml:

build_backend:
  image: web-app
  services:
    - mysql:5.7
  stage: build
  script:
    - make build

test_frontend:
  image: node:8
  stage: test
  script:
    - make run-tests

如果可能,我在make run-tests中触发的测试是否需要对后端容器运行HTTP请求?

我试图避免建立一个新容器,然后推送到注册表只是为了再次将其拉下,但是也许没有其他方法了吗?如果这样做,将我的Web应用程序容器作为服务添加到test_frontend作业中后,我的Web应用程序容器仍然可以访问mysql容器。

1 个答案:

答案 0 :(得分:1)

否,阶段之间容器不可用。默认情况下,作业工件(即文件)将在阶段和can also be passed explicitly betweeen jobs之间传递。

如果您需要针对容器运行测试,则确实应该再次从注册表中将其下拉。然后,您可以使用 docker dind)服务运行测试。

我认为this blog post很好地解释了一个类似的用例。其中描述的测试工作如下:

test:
  stage: test
  script:
    - docker run -d --env-file=.postgres-env postgres:9.5
    - docker run --env-file=.environment --link=postgres:db $CONTAINER_TEST_IMAGE nosetests --with-coverage --cover-erase --cover-package=${CI_PROJECT_NAME} --cover-html