但是,在jenkinsfile机制上,这是行不通的。 >除了使用jenkinsfile,我们还迁移到了在docker中构建。我在某些地方读到docker可能与sshagent插件冲突,所以我试图通过使用“ agent any”启动干净的工作并尝试进行测试来删除docker。 :
@NonCPS // Necessary to allow .each to work.
def changelist() {
def changes = ""
currentBuild.changeSets.each { set ->
set.each { entry ->
changes += "${entry.author.id} "
}
}
changes
}
pipeline {
agent none
stages {
stage('test') {
agent any
steps {
sshagent ( ['a-jenkins-credential']) {
sh '''
ssh -vv myuser@myserver echo testing connection || true
ssh-add -L
echo done running remote windows test
'''
}
}
}
}
}
在同一台服务器上,但使用jenkins GUI可以正常工作,但是在jenkinsfile管道上会产生:
FATAL: [ssh-agent] Could not find specified credentials
并继续运行,并在ssh命令上失败。有趣的是,该作业使用完全相同的密钥成功从GIT中拉出,因此这并不是好像未将其安装在服务器上。
#1 楼
发现了问题:我正在使用GUI上的人类可读密钥名称。
需要使用密钥的UUId ID(在凭据屏幕中名称旁边指定)
/>
steps {
sshagent ( ['THIS-SHOULD-HAVE-BEEN-A-UNIQUE-ID-INSTEAD-OF-A-NAME']) {
评论
您是否愿意在GUI中显示UUID的示例?
– 2rs2ts
18年11月13日在20:09
项目不再处于活动状态,所以我没有屏幕截图。但是,当您在Jenkins配置中浏览凭据时:您会发现配置屏幕上的密钥具有2个属性:它具有人类可读的名称,例如:“ My_Dev_Credentials”,该名称显示在大多数屏幕中。但是,它也有一个唯一的ID,该ID应该看起来像一个长的十六进制字符串(对人类来说是垃圾)。它应类似于:“ 571fe649-7844-4e93-891e-35496cc8cc72”。基本上,您应该使用十六进制ID代替凭据的英文名称。希望对您有所帮助
–eshalev
18年11月14日在22:00