Несколько изображений докеров в.gitlab-ci.yml
Вот моя проблема с GitLab и его интегрированным сервисом CI. У меня есть текущий GitLab 8.1. и gitlabci-multi-runner (0.6.2) с поддержкой Docker. После расширения ubuntu: точное изображение, чтобы включить git
и build-essentials
(теперь называемый точным: 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
чтобы поддержать это?
Ответы
Ответ 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: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
Ответ 2
Вы можете использовать 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