C ++ 17 проблемы с Gitlab CI / CD - PullRequest
       14

C ++ 17 проблемы с Gitlab CI / CD

0 голосов
/ 29 января 2020

Я пытался настроить CI / CD в репозитории для библиотеки, над которой я работаю. Требуется C ++ 17 и успешно компилируется на моей локальной машине. Однако, когда конвейер работает на Gitlab, когда он компилируется, я получаю эту ошибку.

 $ make check
 Scanning dependencies of target gtest
 [  9%] Building CXX object googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest- 
 all.cc.o
 [ 18%] Linking CXX static library ../../lib/libgtest.a
 [ 18%] Built target gtest
 Scanning dependencies of target mconf
 [ 27%] Building CXX object CMakeFiles/mconf.dir/src/config_option.cpp.o
 [ 36%] Building CXX object CMakeFiles/mconf.dir/src/config_file.cpp.o
 In file included from /builds/USER/config_parser/src/config_file.cpp:1:0:
 /builds/USER/config_parser/src/config_file.hpp:9:10: fatal error: filesystem: No 
 such file or directory
 #include <filesystem>
           ^~~~~~~~~~~~
 compilation terminated.
 CMakeFiles/mconf.dir/build.make:86: recipe for target 
 'CMakeFiles/mconf.dir/src/config_file.cpp.o' failed
 make[3]: *** [CMakeFiles/mconf.dir/src/config_file.cpp.o] Error 1
 CMakeFiles/Makefile2:100: recipe for target 'CMakeFiles/mconf.dir/all' failed
 make[2]: *** [CMakeFiles/mconf.dir/all] Error 2
 CMakeFiles/Makefile2:75: recipe for target 'CMakeFiles/check.dir/rule' failed
 make[1]: *** [CMakeFiles/check.dir/rule] Error 2
 Makefile:175: recipe for target 'check' failed
 make: *** [check] Error 2
 ERROR: Job failed: exit code 1

Вот мой файл .gitlab-ci.yml.

image: ubuntu:latest

stages:
    - build

before_script:
    - apt update -qq

Build:
    stage: build
    script:
        - apt install -y -qq cmake make git gcc g++
        - mkdir build
        - cd build
        - cmake ..
        - make check
    artifacts:
        paths:
            - public

У меня также нет изменил любые настройки для CI / CD на Gitlab. Я попытался использовать debian: stable, но только что получил ошибку компоновщика для функций, которые я использую из файловой системы.

1 Ответ

1 голос
/ 29 января 2020

Согласно https://hub.docker.com/_/ubuntu/

Ubuntu: самый последний тег указывает на «последний LTS», так как эта версия рекомендуется для общего использования. Тег ubuntu: roll указывает на последний выпуск (независимо от статуса LTS).

На момент написания ubuntu:latest соответствует выпуску Ubuntu 18.04, который может быть слишком старым.

Попробуйте ubuntu:rolling, что в настоящее время соответствует Ubuntu 19.10.

...