Моя компания является новичком в Conan, Artifactory и Jenkins, но мы создали несколько тестовых сценариев конвейера несколько месяцев назад и использовали плагин Jenkins Artifactory для публикации некоторых пакетов Conan на нашем сервере Artifactory.Эти сценарии теперь не работают с ошибкой сертификации SSL.
Мы используем следующие пакеты:
- Jenkins v2.121
- Jenkins Artifactory Plugin v2.16.1
- Artifactory Pro v5.10.3
- Conan v1.3.3
Наш этап "упаковать и опубликовать" в наших сценариях конвейера выглядит примерно так, когда речь идет о конфигурации Artifactory:
stage('Package and Publish') {
def artifactory_name = "MyCompanyArtifactory"
def artifactory_repo = "conan-local"
def server = Artifactory.server artifactory_name
def client = Artifactory.newConanClient()
def serverName = client.remote.add server: server, repo: artifactory_repo
client.run(command: "export-pkg . ci-user/stable -s os=Linux -s arch=x86_64 -s build_type=Debug")
client.run(command: "export-pkg . ci-user/stable -s os=Linux -s arch=x86_64 -s build_type=Release")
String myCmd = "upload MyLib/* --all -r ${serverName} --confirm"
def bInfo = client.run(command: myCmd)
//server.publishBuildInfo bInfo
}
Этот код работал одно время, но я считаю, что он перестал работать, когда наш ИТ-отдел переключил Artifactory на доступ HTTPS.Теперь Jenkins выдает ошибку при попытке установить пользователя Conan для нашего репо:
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Package and Publish)
[Pipeline] getArtifactoryServer
[Pipeline] initConanClient
[shared-mylib] $ sh -c 'conan config set log.trace_file=\"/home/builduser/jenkins/workspace/shared-mylib@tmp/conan.tmp261537390058591873/conan_log.log\" '
[Pipeline] conanAddRemote
[shared-mylib] $ sh -c "conan remote add b519966f-f612-4094-b3ea-453a017cf793 https://artifactory.mycompany.com/artifactory/api/conan/conan-local "
WARN: Remotes registry file missing, creating default one in /home/builduser/jenkins/workspace/shared-rtplib@tmp/conan.tmp261537390058591873/.conan/registry.txt
[Pipeline] conanAddUser
Adding conan user 'ci-user', server 'b519966f-f612-4094-b3ea-453a017cf793'
[shared-mylib] $ sh -c ********
ERROR: HTTPSConnectionPool(host='artifactory.mycompany.com', port=443): Max retries exceeded with url: /artifactory/api/conan/conan-local/v1/users/authenticate (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)'),))
Это поведение не ограничивается доступом Jenkins;это также происходит, когда обычные пользователи пытаются получить доступ к репозиторию Artifactory Conan, но мы можем обойти его, добавив удаленное репо с Verify_SSL как False (в конце следующей команды):
conan remote add myco-conan-local https://artifactory.mycompany.com/artifactory/api/conan/conan-local False
Iповерьте, документация Conan указывает на то, что у нас есть два варианта:
- Отключить проверку SSL с помощью команды
conan remote
(см. выше) - Добавить файл crt сервера вфайл cacert.pem в домашнем каталоге conan.
К сожалению, я не смог выяснить, как реализовать какое-либо из решений, когда речь идет о сценарии конвейера Jenkins.Итак, мои вопросы:
- Есть ли способ отключить проверку SSL с помощью команды
client.remote.add
(или что-то подобное) в сценарии конвейера Jenkins? - Есть ли способ включить необходимый серверный сертификат через конвейерный сценарий Jenkins (чтобы он автоматически добавлялся в домашний каталог conan, специфичный для рабочей области)?
Опция # 1вероятно, предпочтительнее для более простого краткосрочного решения, но я хотел бы понять, как реализуется вариант № 2.
Спасибо за чтение.