Jenkins Scripted Pipeline предоставляет учетные данные GitHub SSH для шага сборки - PullRequest
0 голосов
/ 31 октября 2018

У меня есть шаг sh в скриптовом конвейере Jenkins, который, в свою очередь, просит git клонировать частный репозиторий GitHub через SSH (это система управления зависимостями, которая обрабатывает зависимости, размещенные на GitHub). Сам конвейер выполняется через плагин GitHub Organization. Он включает в себя команду checkout scm, которая также обращается к частному репозиторию, из журнала, который я вижу, что он использует переменную окружения GIT_SSH для передачи информации для входа в систему на этом шаге (это прекрасно работает). Есть ли способ передать эту же информацию на другой шаг, то есть на мой sh "install_dependencies.sh" шаг? Обратите внимание, что withCredentials даст мне доступ к учетным данным через переменные среды, но как мне передать их в git? GIT_SSH - это путь к сценарию оболочки ssh, который я не знаю, как сгенерировать с помощью withCredentials. Есть ли другой способ передать учетные данные в git через переменные окружения?

Минимальный Jenkinsfile будет выглядеть следующим образом:

node {
    checkout scm  // successfully accesses github credentials
    withCredentials([
        // what to put here?
    ]) {
        // install python dependencies
        sh 'pip install -r requirements.txt'
    }
    sh 'pytest'
}

В файле requirements.txt перечислены зависимости, он содержит строку вида -e git+ssh://git@github.com/some_private/repo@dev#egg=egg_name который указывает pip получить требование через git.

Вероятно, можно вручную извлечь код, используя другой шаг Jenkins checkout scm, а затем установить его из Jenkinsfile. Тем не менее, это лишило бы смысла иметь requirements.txt в качестве единственного источника истины для требований.

1 Ответ

0 голосов
/ 15 января 2019

Я только что нашел вопрос, и то, что работало для меня согласно документам, было

        withCredentials([sshUserPrivateKey(credentialsId: 'Credential-id', keyFileVariable: 'CERT')]) {
      sh 'cp -prf $CERT ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa'
}

копирует сертификат из того места, где он находится, в локальное хранилище сертификатов докера. что позволяет мне клонировать при выполнении вытягивания зависимости

...