【发布时间】:2019-03-11 18:29:10
【问题描述】:
我在 Jenkins 2.107.2 上创建了一个多分支管道。我想在克隆的存储库上执行git commit、git push 等 Git 命令。
为了对 GitHub 存储库进行身份验证,我使用 (https://wiki.jenkins-ci.org/display/JENKINS/Credentials+Binding+Plugin) 在 Jenkins 中配置了我的用户凭据。我尝试了几种方法来使用这些凭据进行身份验证,但它们会导致不同的错误。
第一种方法
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/heads/:refs/remotes/ origin/”返回状态码 128: 标准输出: 标准错误:主机密钥验证失败。 致命:无法从远程存储库中读取。 请确保您拥有正确的访问权限 并且存储库存在。
与这些错误作斗争我有以下问题:
- 是否可以将用户名和密码凭据从 Jenkinsfile 传递到 Github 存储库进行身份验证?
- 我应该使用 SSH 密钥而不是用户名和密码吗?
- 我还应该尝试其他方法吗(但不要太老套)?
【问题讨论】:
标签: git authentication github jenkins-pipeline