как настроить gitlab-runner с помощью conan remote?

Я пытаюсь настроить Conan для gitlab-runner.

Когда я настраиваю conan для себя, я могу использовать «conan remote add ...», «conan user ...», и результаты сохраняются в моем домашнем каталоге.

Однако я не могу войти в систему как gitlab-runner, поэтому не знаю, как сохранить эти настройки. Я могу определить CONAN_USER_HOME в .gitlab-ci.yml так, чтобы он указывал на каталог, но неясно, будет ли у gitlab-runner разрешения читать все, что я добавляю в этот каталог.

Обычно это делается путем добавления этих команд conan в .gitlab-ci.yml, чтобы они вызывались при каждом запуске? Это похоже на пустую трату ресурсов.


person dockd    schedule 18.07.2019    source источник


Ответы (1)


Conan предоставляет некоторые переменные среды, которые помогут вам войти в систему в соответствии с вашим удаленным именем: CONAN_LOGIN_USERNAME_ и CONAN_LOGIN_PASSWORD_.

Однако это не решит вашу проблему полностью, вам необходимо добавить удаленный адрес. Таким образом, вы можете использовать переменные env Gitlab как динамические:

image: conanio/gcc8:latest

run:
  script:
    - conan remote add upload_repo ${CONAN_REMOTE}
    - conan create . demo/stable
    - conan upload foo/0.1.0@demo/stable --all -r upload_repo

Здесь я просто добавляю свой репозиторий Conan с помощью env var ${CONAN_REMOTE}, который будет настроен через мои переменные env Gitlab. Кроме того, у меня должны быть CONAN_LOGIN_USERNAME_upload_repo и CONAN_LOGIN_PASSWORD_upload_repo, иначе мне понадобится дополнительный шаг для conan user -r upload_repo -p <password> <username>

Он работает для простой сборки, но я бы сказал, что он ограничен и плохо масштабируется, когда вам нужно создавать разные конфигурации.

ИМО, вам следует попробовать Conan Package Tools, который является расширением для использования в CI. . Вы можете сгенерировать шаблон для gitlab, запустив:

conan new foo/0.1 -cis -ciglg

Он сгенерирует файлы build.py и .gitlab-ci.yml.

Также вы можете взглянуть на этот пример используя Gitlab.

person uilianries    schedule 19.07.2019
comment
Вот что произойдет, если я укажу CONAN_USER_HOME = / scratch1 / conan2 и попытаюсь заставить Конана создать кеш в .gitlab-ci.yml: conan user -r my-repo build_bot ПРЕДУПРЕЖДЕНИЕ: удаляет отсутствующий файл реестра, создавая файл по умолчанию в /scratch1/conan2/.conan/remotes. json ОШИБКА: в пультах дистанционного управления не определено удаленное 'my-repo' - person dockd; 23.07.2019
comment
Я думаю, ваша проблема в Gitlab, а не в Конане. Конан следует правильным шагам, так как ваш дом пользователя Conan пуст, он создаст там новый. - person uilianries; 23.07.2019
comment
Хранение пакетов Conan в кэше Gitlab не является хорошей практикой. Я мог загружать пакеты на локальный пульт и загружать их снова при сборке. - person uilianries; 23.07.2019