尝试设置Gitlab CI,可以构建一个docker镜像,并且发现DinD最初仅针对不同的跑步者启用,Blog Post建议不久将为共享的跑步者启用,
运行DinD需要在跑步者中启用特权模式,在注册跑步者时将其设置为标志,但无法找到共享跑步者的等效机制
答案 0 :(得分:22)
共享的跑步者现在能够构建Docker镜像。这是你可以使用的工作:
stages:
- build
- test
- deploy
# ...
# other jobs here
# ...
docker:image:
stage: deploy
image: docker:1.11
services:
- docker:dind
script:
- docker version
- docker build -t $CI_REGISTRY_IMAGE:latest .
# push only for tags
- "[[ -z $CI_BUILD_TAG ]] && exit 0"
- docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$CI_BUILD_TAG
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- docker push $CI_REGISTRY_IMAGE:$CI_BUILD_TAG
此作业假定您使用的是Gitlab提供的Container Registry。仅当构建提交标记有版本号时,它才会推送映像。
请注意,您需要缓存或生成服务的任何依赖项的临时工件,这些工件尚未在存储库中提交。这应该在其他工作中完成。例如node_modules
通常不包含在存储库中,必须从build
/ test
阶段进行缓存。