Блокировка сценария Jenkins git pull из-за ошибки «Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента» (Bitbucket) - PullRequest
1 голос
/ 29 января 2020

Мой сценарий конвейера jenkins очень прост (пока), см. Ниже

node{
    stage('Scm Checkout'){
        git credentialsId: 'git-creds', url: 'https://xx@xx/xx.git'
    }
}

Ошибка, которую я получаю, - SSL certificate problem: unable to get local issuer certificate - я извлекаю из репозитория Bitbucket.

Интересно, что его сбой в следующей строке:

git.exe fetch --tags --force --progress -- https://xx@xx/xx.git +refs/heads/*:refs/remotes/origin/* # timeout=10

однако я могу запустить этот штраф с git bash, если я сначала просто введу следующую команду:

git config --global http.sslVerify false

Я видел пост в другом месте, где кто-то страдал от той же самой проблемы, и его комментарий был: «Добавление следующего к файлу gitconfig решило проблему»

{{[http] }}

sslVerify = false

Это может быть решением, но я не уверен, какие именно шаги Мне нужно следовать, чтобы добиться этого

Ответы [ 2 ]

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

Отключение проверки ssl редко является хорошим решением и может рассматриваться только для тестирования (например, для проверки работоспособности сетевого подключения)

Лучше определить фиктивное задание, которое выполняет git config --list, и обратите внимание на путь http.sslcainfo для ca-bundle.crt.

Вы можете добавить в этот пакет сертификаты с bitbucket.org (используя openssl s_client -showcerts -connect).

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

Если вы хотите отключить ssl-проверку в git и не хотите выполнять команду git config ... в своем конвейере, вы можете отредактировать файл конфигурации git и добавить в конце его

[http]
sslVerify = false

Вы можете сделать это в разных файлах, в зависимости от того, хотите ли вы, чтобы это изменение применялось только к текущему репо или ко всем репо в одном и том же узле. Я рекомендую вам взглянуть на git-config справочную страницу

ФАЙЛЫ
... есть три файла, где git config будет искать параметры конфигурации:

$ GIT_DIR / config
Спецификация репозитория c файл конфигурации. (Имя файла, конечно, относится к хранилищу root, а не к рабочему каталогу.)

~ / .gitconfig
Пользовательский файл конфигурации c. Также называется «глобальным» файлом конфигурации.

$ (префикс) / etc / gitconfig
Общесистемный файл конфигурации.

Добавление предыдущего шага к кассе, которая вставляет этот конфиг в активное репо, добьется цели и повлияет только на текущее репо. Что-то в строках кода ниже должно работать

node {
    stages {
        stage('Pre-Checkout') {
            steps {
                sh "git config http.sslVerify false"
            }
        }
        stage('Scm Checkout'){
            git credentialsId: 'git-creds', url: 'https://xx@xx/xx.git'
        }
    }
}
...