在第一个示例中,图像名称为docker:latest
。阶段是管道的定义,我可以有构建,测试,部署阶段。
片段1
gitlab-ci.yml
docker-build:
# Use the official docker image.
image: docker:latest
stage: build
- 我可以知道
docker-build
的定义吗? - 我可以把它命名为
build
或其他什么,是什么用途?
片段2
gitlab-ci.yml
image: docker:latest
services:
- docker:dind
build:
stage: build
script:
- docker build -t test .
在另一个例子中,有定义的服务。为什么我需要服务,什么时候不需要?
我可以说这个例子必须有另一个文件'Dockerfile',所以docker构建命令只工作?
一旦构建成功,映像将被命名为docker:latest?
Job-naming:
有一些保留的关键字不能用于作业名称,如stages
,services
等,参见https://docs.gitlab.com/ee/ci/yaml/#unavailable-names-for-jobs
你可以给你的工作起任何你喜欢的名字。
阶段正如你所写的,有一组预定义的阶段:.pre
,build
,test
,deploy
和.post
-但你也可以用
stages:
- build
- build-docker
- test
- deploy
Dockerfile
是的,你需要一个dockerfile来构建docker,你的图像的标签将是test
,因为它是用-t test
定义的。关于使用gitlab ci构建docker映像,我可以推荐https://blog.callr.tech/building-docker-images-with-gitlab-ci-best-practices/阅读。
我希望这能有所帮助。一般来说,我建议你阅读gitlab文档和入门指南:https://docs.gitlab.com/ee/ci/quick_start/-它解释了很多默认概念。我建议不要在一个stackoverflow问题中问太多问题,把注意力集中在一个主题上