我正在尝试使用Ant脚本部署PHP应用程序。我已将所有必需的jar放入库中:即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)
奇怪的是,当我在计算机上本地运行构建脚本时,它运行正常。
任何帮助将不胜感激。
答案 0 :(得分:1)
问题是我有一个保存私钥路径的变量,字符串可能有多余的空格或字符,并且ANT感到困惑。我用私钥的直接路径替换了变量,它起作用了。为了重用变量,我复制了路径并将其分配给run命令中的相同变量。