在下一阶段是否可以访问在构建阶段使用的容器?我有这样的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容器。
答案 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