web-dev-qa-db-fra.com

Plusieurs images Docker dans .gitlab-ci.yml

Voici ma configuration de problème avec GitLab et son service CI intégré. J'ai un GitLab 8.1 actuel. et un gitlabci-multi-runner (0.6.2) avec support Docker. Après avoir étendu l'ubuntu: image précise pour inclure git et build-essentials (Maintenant nommé précis: base), j'ai obtenu le .gitlab-ci.yml Suivant:

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

Maintenant, ma question est de savoir comment inclure plus de travaux sur différentes images? Parce que je dois vérifier si le code se compile (et plus tard fonctionne) sur différents systèmes d'exploitation comme Ubuntu Precise, Ubuntu Trusty, CentOS 6, CentOS 7. Pour réduire le travail, je pense que la meilleure façon est de fournir différentes images Docker comme base.

Maintenant, la question est de savoir à quoi doit ressembler le .gitlab-ci.yml Pour soutenir cela?

48
M.K. aka Grisu

Vous pouvez définir l'image à utiliser par tâche .

Par exemple:

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

Vous pouvez utiliser Anchors pour faire le .gitlab-ci.yml plus clairement. (Mais cela nécessite GitLab 8.6 et GitLab Runner v1.1.1.)

Comme ça:

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