我是詹金斯档案的新手。我以前从GUI中配置了Jenkins任务,现在我们正在升级服务器以使用Jenkinsfile。我的工作包含一个需要SSH到另一个服务器的部分。为此,我以前使用GUI上的sshagent插件来指定我的键。但是,在jenkinsfile机制上,这是行不通的。
首先要做的是:除了使用jenkinsfile之外,我们还使用了在码头构建。我在一些地方读到,码头可能与必要的插件冲突,所以我试图删除对接,开始一个干净的工作与“代理任何”,并试图测试。
所以我的新工作是这样的:
@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中提取,所以它不是没有安装在服务器上。
发布于 2018-03-27 09:40:03
发现了问题:
我正在使用GUI中的人类可读的密钥名。需要使用密钥的UUId ID (这是在凭据屏幕的名称旁边指定的)
steps {
sshagent ( ['THIS-SHOULD-HAVE-BEEN-A-UNIQUE-ID-INSTEAD-OF-A-NAME']) {https://devops.stackexchange.com/questions/3742
复制相似问题