Я создал многоотраслевой конвейер на 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: сбой проверки ключа хоста.Неустранимый: Не удалось прочитать из удаленного хранилища.Убедитесь, что у вас есть правильные права доступа, а хранилище существует.
В связи с этими ошибками у меня возникают следующие вопросы:
- Можно ли передать учетные данные имени пользователя и пароля?для аутентификации в репозитории Github из Jenkinsfile?
- Стоит ли использовать SSH-ключ вместо имени пользователя и пароля?
- Есть ли какой-то другой подход, который я должен попробовать (но не слишком хакерский)?