在. gitlab-ci. yml 中显示多个 Docker 图像

下面是我对 GitLab 及其集成 CI 服务的设置问题。我现在有一个 GitLab 8.1。以及一个支持 Docker 的 gitlabci-multi-runner (0.6.2)。在扩展了 ubuntu: Precision 映像以包含 gitbuild-essentials(现在命名为 基地)之后,我运行了以下 .gitlab-ci.yml:

image: precise:base
before_script:
- apt-get install --yes cmake libmatio-dev libblas-dev libsqlite3-dev libcurl4-openssl-dev
- apt-get install --yes libarchive-dev liblzma-dev


build:
script:
- mkdir build/
- cd build
- cmake -D CMAKE_BUILD_TYPE=Debug ../
- make

现在我的问题是如何在不同的图片上包含更多的工作?因为我需要检查代码是否在不同的操作系统上编译(以及稍后的工作) ,比如 Ubuntu Precision,Ubuntu Trusty,CentOS 6,CentOS 7。为了减少工作量,我认为最好的方法是提供不同的 Docker 图像作为基础。

现在的问题是,.gitlab-ci.yml看起来必须如何支持这一点?

86235 次浏览

You can define the image to use per job.

For instance:

before_script:
- apt-get install --yes cmake libmatio-dev libblas-dev libsqlite3-dev libcurl4-openssl-dev
- apt-get install --yes libarchive-dev liblzma-dev


build:precise:
image: precise:base
script:
- mkdir build/
- cd build
- cmake -D CMAKE_BUILD_TYPE=Debug ../
- make


build:trusty:
image: trusty:base
script:
- mkdir build/
- cd build
- cmake -D CMAKE_BUILD_TYPE=Debug ../
- make

Your can use Anchors to make the .gitlab-ci.yml more clearly. (But this need GitLab 8.6 and GitLab Runner v1.1.1.)

Like this:

before_script:
- apt-get install --yes cmake libmatio-dev libblas-dev libsqlite3-dev libcurl4-openssl-dev
- apt-get install --yes libarchive-dev liblzma-dev


.build_template: &build_definition
script:
- mkdir build/
- cd build
- cmake -D CMAKE_BUILD_TYPE=Debug ../
- make


build:precise:
image: precise:base
<<: *build_definition


build:trusty:
image: trusty:base
<<: *build_definition