【发布时间】:2019-06-22 01:34:51
【问题描述】:
我正在尝试使用 Ant 脚本部署 PHP 应用程序。我已经把所有必要的 jars 都放在了库中:即 ant-jsch-1.8.1.jar、jsch-0.1.55.jar
在我的脚本中,我声明了 sshexec 和 scp,如下所示:
<path id="jsch.class.path">
<pathelement location="lib/ant-jsch-1.8.1.jar" />
<pathelement location="lib/jsch-0.1.55.jar" />
</path>
<taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="jsch.class.path" />
<taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec" classpathref="jsch.class.path" />
当在 Jenkins 中执行构建时,尽管公钥的位置正确,但我会收到这些错误事件:
[sshexec] Caught exception: java.io.FileNotFoundException: /home/jenkins/.ssh/id_dsa (No such file or directory)
[sshexec] Caught exception: java.io.FileNotFoundException: /home/jenkins/.ssh/id_dsa (No such file or directory)
[scp] Caught exception: java.io.FileNotFoundException: /home/jenkins/.ssh/id_dsa (No such file or directory)
奇怪的是,当我在我的机器上本地运行构建脚本时,它运行良好。
任何帮助将不胜感激。
【问题讨论】:
-
您使用主节点还是其他节点来运行它?如果您使用不同的,您的 ssh 文件存储在哪里,在节点上还是在主节点上?
-
biruk1230 “使用主节点或不同节点”是什么意思?我在 jenkins 服务器上运行脚本,它具有所有必需的库文件。编译后的文件也在同一个工作区中。
-
我的意思是,Jenkins 服务器(又名“主服务器”)通常也很少有额外的节点来运行项目。通常问题是您的文件位于 master 上,但您在不同的节点上运行作业。根据您的回答,我假设您只有一个没有其他节点的 Jenkins 主服务器,所以我只能建议仔细检查您目录中的文件名,也许您有
id_dsa.pub或id_rsa而不是id_dsa文件在/home/jenkins/.ssh目录中。 -
谢谢..我确实有错字,应该是 id_rsa。不幸的是它仍然有同样的错误,除了这次文件名是'id_rsa'。
-
我终于找到了问题所在。我有一个变量保存到私钥的路径,但字符串有一个额外的空格或字符,蚂蚁感到困惑。我替换了变量并将路径直接放入,它可以工作。感谢您的帮助。