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?
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
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