web-dev-qa-db-ja.com

.gitlab-ci.ymlの複数のDockerイメージ

GitLabとその統合CIサービスを使用した問題のセットアップを以下に示します。現在GitLab 8.1を持っています。 Dockerをサポートするgitlabci-multi-runner(0.6.2)。 gitおよびbuild-essentials(現在の名前はprecise:base)を含むようにubuntu:preciseイメージを拡張した後、次の.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がこれをどのようにサポートする必要があるかということです。

48
M.K. aka Grisu

ジョブごとに使用するイメージを定義する を使用できます。

例えば:

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
77
yjwong

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
16
Jintao Zhang