【发布时间】:2020-12-03 12:43:27
【问题描述】:
我有一个简单的詹金斯管道构建,这是我的詹金斯文件:
pipeline {
agent any
stages {
stage('deploy-staging') {
when {
branch 'staging'
}
steps {
sshagent(['my-credentials-id']) {
sh('git push joe@repo:project')
}
}
}
}
}
我正在使用 sshagent 推送到远程服务器上的 git repo。我已经创建了指向 Jenkins master ~/.ssh 中的私钥文件的凭据。
当我运行构建时,我得到了这个输出(我用 * 替换了一些敏感信息):
[ssh-agent] Using credentials *** (***@*** ssh key)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-cjbm7oVQaJYk/agent.11558
SSH_AGENT_PID=11560
$ ssh-add ***
Identity added: ***
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 11560 killed;
[ssh-agent] Stopped.
[TDBNSSBFW6JYM3BW6AAVMUV4GVSRLNALY7TWHH6LCUAVI7J3NHJQ] Running shell script
+ git push joe@repo:project
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
如您所见,ssh-agent 启动后立即停止,然后运行 git push 命令。奇怪的是它曾经正常工作过一次,但看起来完全随机。
我对 Jenkins 还是很陌生 - 我是否遗漏了一些明显的东西?任何帮助表示赞赏,谢谢。
编辑:我正在运行一个多分支管道,以防万一。
【问题讨论】:
-
正如@herm 指出的那样,问题的原因并不是 ssh-agent 停止。 (我怀疑它在完成目标后停止并且不再需要它?)请考虑给您的问题一个新标题,以免误导其他人。
标签: jenkins jenkins-pipeline ssh-agent