我正在尝试在客户端的Jenkins上使用Gradle release plugin(1.x,所以没有Jenkinsfile管道......)。我在盒子上测试过,一切都很好。但是,当我调用构建作业时,它会失败并输出:
Task :foundation:checkUpdateNeeded FAILED
Running [git, remote, update] produced an error: [Permission denied (publickey).
我知道Jenkins已经获得了一套Git SSH凭证,因为这项工作首先是从Git中查看一份新的副本。
我们如何让发布插件使用在结账时为作业配置的凭据?
答案 0 :(得分:0)
假设这是一个自由式工作,并且您正在使用私钥进行身份验证:
Use secret text(s) or file(s)
选项。选择git凭据并输入需要导入的环境变量的名称。答案 1 :(得分:0)
Gradle版本不允许配置git凭据。即使这个问题是不必要的,我也会提出两种不同的可能性来解决这个问题,因为我整天都在为此而苦苦挣扎。为什么?因为我不再被允许在公司中使用SSH,所以我们将转向docker容器来分发我们的CI管道:
1。)按照说明here
将SSH密钥放在用户jenkins〜/ .ssh / id_rsa下2。)在gradle版本之前使用“执行外壳”来配置遥控器:
令牌必须配置为an environment variable。回答最初的问题。
3。)使用管道可以包含更多高级功能。我在Jenkinsfile下面放置了gradle版本(您也可以使用sshagent (credentials: ['credential'])
,然后就不需要git了):
// GITLAB_API_TOKEN
withCredentials([string(credentialsId: 'nexususer', variable: 'nexusUsername'),
string(credentialsId: 'nexuspassword', variable: 'nexusPassword'),
string(credentialsId: 'nexussnapshoturl', variable: 'nexusSnapshotUrl'),
string(credentialsId: 'nexusreleaseurl', variable: 'nexusReleaseUrl'),
string(credentialsId: 'token', variable: 'GITLAB_API_TOKEN')]) {
if (env.BRANCH_NAME == "master") {
stage('Release') {
gitlabCommitStatus(name: 'Release') {
// Run the gradle release
sh 'git config user.email "email"'
sh 'git config user.name "name"'
sh "git remote rm origin"
sh "git remote add origin https://username:${GITLAB_API_TOKEN}@yourrepo"
sh "gradle clean release -Prelease.useAutomaticVersion=true"
}
}
}
}