.gitlab-ci.yml中的多个Docker镜像

M.K*_*isu 53 git continuous-integration docker gitlab-ci

这是我使用GitLab及其集成CI服务设置的问题.我有一个当前的GitLab 8.1.和一个支持Docker的gitlabci-multi-runner(0.6.2).在扩展了ubuntu:精确图像以包含gitbuild-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
Run Code Online (Sandbox Code Playgroud)

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

现在问题是.gitlab-ci.yml看起来如何支持这个?

yjw*_*ong 82

您可以定义每个作业使用的图像.

例如:

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
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法为每个作业定义两个图像?我需要一个 gradle:jdk11 映像以及一个 mysql 映像来进行特定的测试作业 (8认同)

小智 16

你可以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
Run Code Online (Sandbox Code Playgroud)