Múltiples imágenes de Docker en.gitlab-ci.yml


Aquí está mi configuración de problemas con GitLab y su servicio de CI integrado. Tengo un GitLab 8.1 actual. y un gitlabci-multi-runner (0.6.2) con soporte Docker. Después de extender la imagen de ubuntu: precise para incluir git y build-essentials (ahora llamado precise:base) tengo lo siguiente .gitlab-ci.yml funcionando:

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

Ahora mi pregunta es ¿cómo incluir más trabajos en diferentes imágenes? Porque necesito comprobar si el código compila (y después funciona) en diferentes sistemas operativos como Ubuntu Preciso, Ubuntu Trusty, CentOS 6, CentOS 7. Para reducir el trabajo creo que la mejor manera es proporcionar diferentes imágenes Docker como base.

Ahora la pregunta es ¿cómo debe lucir el .gitlab-ci.yml para apoyar esto?

Author: Matthias Braun, 2015-10-28

2 answers

Puede definir la imagen a utilizar por trabajo.

Por ejemplo:

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
 40
Author: yjwong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-30 18:18:01

Puede usar Anchors para hacer el .gitlab-ci.yml más claramente. (Pero esto necesita GitLab 8.6 y GitLab Runner v1.1. 1.)

Así:

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
 1
Author: TaoBeier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-06 07:57:07