首页 文章

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

提问于
浏览
28

这是我使用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

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

现在问题是 .gitlab-ci.yml 必须如何支持这个?

2 回答

  • 3

    你可以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
    
  • 47

    您可以使用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
    

相关问题