Аутентификация в репозитории Github с использованием имени пользователя и пароля в конвейере Jenkins - PullRequest
0 голосов
/ 11 марта 2019

Я создал многоотраслевой конвейер на Jenkins 2.107.2.Я хочу выполнять команды Git, такие как git commit, git push и т. Д. В клонированном репозитории.

Для аутентификации в репозитории GitHub я настроил свои учетные данные в Jenkins с помощью (https://wiki.jenkins -ci.org / display / JENKINS / Credentials + Binding + Plugin ).Я пробовал несколько подходов, чтобы использовать эти учетные данные для проверки подлинности, но они приводят к различным ошибкам.

Первый подход

stage('clone'){
        steps{
            checkout([$class: 'GitSCM', branches: [[name: '*/develop']],
 userRemoteConfigs: [[url: 'https://github.com:xyz/demo.git']]])
        }
    }
stage('prepare release'){
        steps{
            sh "sed -i 's/-SNAPSHOT//g' pom.xml"
            withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'jenkins-user-for-demo-github', usernameVariable: 'GITHUB_DEMO_CREDENTIALS_USR', passwordVariable: 'GITHUB_DEMO_CREDENTIALS_PSW']]) {
                sh "git add pom.xml"
                sh "git commit -m 'release version set"
            }
        }
    }

Ошибка

*** Скажите, пожалуйста, кто вы.Запустите git config --global user.email "you@example.com" git config --global user.name "Ваше имя"

Второй подход

stage('Checkout') {
        steps{
            git branch: 'develop', credentialsId: 'jenkins-user-for-demo-github', url: 'git@github.com:xyz/demo.git'
        }
    }
stage('prepare release'){
        steps{
            sh "sed -i 's/-SNAPSHOT//g' pom.xml"
            sh "git add pom.xml"
            sh "git commit -m 'release version set"
        }
    }

Ошибка

Вызывается: hudson.plugins.git.GitException: Команда «git fetch --tags --progress git@github.com: AbhayChandel / New-project.git + refs/ head / : refs / remotes / origin /"вернул код состояния 128: stdout: stderr: сбой проверки ключа хоста.Неустранимый: Не удалось прочитать из удаленного хранилища.Убедитесь, что у вас есть правильные права доступа, а хранилище существует.

В связи с этими ошибками у меня возникают следующие вопросы:

  1. Можно ли передать учетные данные имени пользователя и пароля?для аутентификации в репозитории Github из Jenkinsfile?
  2. Стоит ли использовать SSH-ключ вместо имени пользователя и пароля?
  3. Есть ли какой-то другой подход, который я должен попробовать (но не слишком хакерский)?

1 Ответ

0 голосов
/ 12 марта 2019

«Учетные данные» требуются только для общения с сервером Git (например, git clone, git fetch, git push), но НЕ для управления локальным хранилищем. Итак, в вашем первом примере git не жалуется на учетные данные , но пропускает конфигурацию при выполнении git commit. Вы можете установить произвольные вещи здесь, как это:

stage('clone'){
    steps{
      checkout([$class: 'GitSCM', branches: [[name: '*/develop']], userRemoteConfigs: [[url: 'https://github.com:xyz/demo.git']]])
      sh "git config user.name 'John Doe'"
      sh "git config user.email 'foo@bar.bla'"
    }
}

После этого git commit должен работать. И если вы не хотите нажать коммит, вы можете удалить оболочку withCredentials.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...