【发布时间】:2017-10-29 11:07:15
【问题描述】:
我使用构建 NPM 项目的 Jenkins 管道模型定义定义了一些 Jenkins 作业。我使用 Docker 容器来构建这些项目(使用与 只是 Node.js + npm + yarn)。
构建的结果包含在我使用zip 管道命令压缩的dist/ 文件夹中。
我想将此 ZIP 文件复制到使用 SSH/SCP(使用私钥身份验证)的另一台服务器。我的私钥已添加到 Jenkins 环境(凭据管理器)中,但是当我使用 Docker 容器时,无法建立 SSH 连接。
我尝试添加 agent { label 'master' } 以使用主 Jenkins 节点进行文件传输,但它似乎使用新的 Git 提取创建了一个干净的工作区,并且没有我构建的文件。
在我尝试了 SSH 代理插件后,我得到了这样的输出:
Identity added: /srv/jenkins3/workspace/myjob-TFD@tmp/private_key_370451445598243031.key (rsa w/o comment)
[ssh-agent] Started.
[myjob-TFD] Running shell script
+ scp -r dist test@myremotehost:/var/www/xxx
$ docker exec bfda17664965b14281eef8670b34f83e0ff60218b04cfa56ba3c0ab23d94d035 env SSH_AGENT_PID=1424 SSH_AUTH_SOCK=/tmp/ssh-k658r0O76Yqb/agent.1419 ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 1424 killed;
[ssh-agent] Stopped.
Host key verification failed.
lost connection
如何添加授权的远程主机?
【问题讨论】:
-
我有同样的问题,sshagent 插件在容器中不起作用
-
使用 withCredentials 并删除 sshAgent 插件
withCredentials([sshUserPrivateKey(credentialsId: 'ssh-credentials-id', keyFileVariable: 'keyfile')]) { sh "mkdir -p ~/.ssh && cp ${keyfile} ~/.ssh/id_rsa" other_stuff}
标签: node.js git jenkins ssh jenkins-pipeline