【发布时间】:2018-07-05 15:11:59
【问题描述】:
我以前使用 shell 为我的 gitlab 运行程序构建我的项目。到目前为止,我已经设置了管道,它将运行我在 gitlab-ci.yml 文件中设置的任何命令,如下所示:
gitlab-ci.yml 使用 shell 运行器
before_script:
- npm install
- npm install --save @angular/material @angular/cdk
cache:
paths:
- node_modules/
stages:
- dev
- staging
- production
build_dev:
stage: dev
script:
- rm ./package-lock.json
- npm run build
- ./node_modules/@angular/cli/bin/ng test --browsers PhantomJS --watch false
现在,我想切换到 docker 映像。我已将运行器重新配置为使用 docker 映像,并在我的新 gitlab-ci.yml 文件中指定了该映像,如下所示。我遵循了 gitlab-ci docker 教程,这就是它停止的地方,所以我不完全确定从这里去哪里:
gitlab-ci.yml 使用 docker runner
image: node:8.10.0
before_script:
- npm install
- npm install --save @angular/material @angular/cdk
cache:
paths:
- node_modules/
stages:
- dev
- staging
- production
build_dev:
stage: dev
script:
- rm ./package-lock.json
- npm run build
- ./node_modules/@angular/cli/bin/ng test --browsers PhantomJS --watch false
问题:
-
使用我当前的 gitlab-ci.yml 文件,它如何构建一个 docker 镜像/它甚至可以构建一个吗?如果是这样,那是什么意思?目前管道通过了,但我不知道它是否在 docker 映像中进行(我应该能够分辨吗?)。
另外,假设创建了 docker 映像,运行了测试,并且管道通过了;它应该将代码推送到新的存储库(尚未包含在 yml 文件中)。从我收集的信息来看,图像没有被推送,只是代码,对吧?那么我该如何处理这个创建的 docker 镜像呢?
-
如何使用 Dockerfile?我看不到 gitlab-ci.yml 文件和 Dockerfile 之间的链接。
-
我是否需要将 gitlab-ci.yml 文件中的所有命令包围在
docker run <commands>或docker exec <commands>中?如果不包含这两个命令之一,它似乎只会在服务器上运行,而不是在 docker 映像中。 -
我看到人们在 gitlab-ci.yml 文件和 Dockerfile 中都指定了一个图像。我有一个角度项目,我指定了
image: node:8.10.0的图像。在 Dockerfile 中,我应该指定相同的图像吗?我见过一些完全不同的项目,我想知道这两个图像的用途是什么/如果选择一个图像而不是另一个图像会严重影响我的构建。
【问题讨论】:
标签: docker gitlab gitlab-ci gitlab-ci-runner