在ant 1.10中使用sshexec时发生异常

时间:2019-01-29 00:41:31

标签: jenkins build ant

我正在尝试使用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)

奇怪的是,当我在计算机上本地运行构建脚本时,它运行正常。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

问题是我有一个保存私钥路径的变量,字符串可能有多余的空格或字符,并且ANT感到困惑。我用私钥的直接路径替换了变量,它起作用了。为了重用变量,我复制了路径并将其分配给run命令中的相同变量。