Я использую GitLab CI для сборки своего C ++ проекта внутри образа докера. Я также использую conan в качестве менеджера пакетов для этого проекта. Все работает хорошо, но я бы хотел сохранить кэш conan, чтобы избежать загрузки (или даже сборки) внешних библиотек при каждой сборке. Я попробовал следующее:
.cpp-build:
stage: build
variables:
CONAN_USER_HOME: "${CI_PROJECT_DIR}/conan-home"
before_script:
- mkdir -p build
- conan search "*"
after_script:
- conan search "*"
cache:
paths:
- conan-home
- build
key: "${CI_BUILD_NAME}"
cpp-gcc-build:
extends: .cpp-build
image: conanio/gcc8
script:
- cd build
- conan install --build=missing ../ci_test/cpp/
- cmake ../ci_test/cpp/
- make
artifacts:
paths:
- build/bin/cpp_unit_tests
cpp-gcc-test:
image: conanio/gcc8
stage: test
script:
- build/bin/cpp_unit_tests
GitLab CI, похоже, корректно восстанавливает содержимое каталога conan-home (я попытался перечислить содержимое в сценарии before, и это выглядело нормально), но conan не находит какой-либо установленный пакет в сценарии before и всегда загружает все зависимости. Я не понимаю, чего не хватает.
Задача ещё не решена.
Других решений пока нет …