以下是我使用GitLab及其集成CI服务设置的问题。我有一个当前的GitLab 8.1。和一个支持Docker的gitlabci-multi-runner(0.6.2)。在扩展ubuntu:精确图片以包含git
和build-essentials
(现在名为 precise:base )之后,我运行了以下.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 Precise,Ubuntu Trusty,CentOS 6,CentOS 7)上编译(以及稍后工作)。为了减少工作量,我认为最好的方法是提供不同的Docker镜像作为基础。
现在问题是.gitlab-ci.yml
必须如何支持这一点?
答案 0 :(得分:68)
你可以define the image to use per job。
例如:
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
答案 1 :(得分:13)
您可以使用Anchors
使.gitlab-ci.yml
更加清晰。 (但这需要GitLab 8.6和GitLab Runner v1.1.1。)
赞:
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