es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Habilitando construcciones paralelas en Gitlab-CI

Actualmente tengo un pipeline que construye un programa C++ de la siguiente manera:

build:
  stage: build
  script:
    - rm -rf .git/modules/docs .git/modules/libraries/fc ./docs ./libraries/fc
    - git submodule sync
    - git submodule update --init --recursive
    - rm -rf build
    - mkdir build
    - cd build
    - cmake -DCMAKE_BUILD_TYPE=Release ..
    - make -j$(nproc)

Esta compilación aún debe realizarse, pero también me gustaría compilar en paralelo pero con una opción de cmake diferente:
cmake -DBOOST_ROOT="\"$BOOST_ROOT\"" -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTNET=1

He leído acerca de la opción paralela que incluye gitlab-ci, pero no he tenido éxito al incorporar esto.

¡Cualquier información es muy apreciada! Actualizaré en caso de que se resuelva antes de recibir respuestas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para incorporar la opción paralela en gitlab-ci para la construcción con una opción cmake diferente, puedes modificar el pipeline existente de la siguiente manera:

    build:
      stage: build
      parallel:
        matrix:
          - CMAKE_OPTIONS: '-DCMAKE_BUILD_TYPE=Release'
          - CMAKE_OPTIONS: '-DBOOST_ROOT="$BOOST_ROOT" -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTNET=1'
      script:
        - rm -rf .git/modules/docs .git/modules/libraries/fc ./docs ./libraries/fc
        - git submodule sync
        - git submodule update --init --recursive
        - rm -rf build
        - mkdir build
        - cd build
        - cmake $CMAKE_OPTIONS ..
        - make -j$(nproc)
    

    En el ejemplo anterior, la palabra clave parallel se utiliza para especificar que la etapa build se puede dividir en trabajos separados que se ejecutan en paralelo. La palabra clave matrix se utiliza para definir las diferentes opciones que se deben pasar a cmake para construir el programa.

    La variable CMAKE_OPTIONS se define en la sección matrix y luego se utiliza en la sección script para pasar las opciones adecuadas de cmake al comando cmake.

    Por defecto, GitLab dividirá los trabajos en particiones iguales, pero también puedes especificar el número de particiones utilizando la palabra clave parallel, de la siguiente manera: parallel: 2.

    ¡Espero que esto sea de ayuda! Déjame saber si tienes alguna pregunta.

Comments are closed.