Ant无法在<exec>任务

时间:2016-01-07 21:16:34

标签: java jenkins ant

我正在使用Jenkins / ant将我的应用程序部署到远程服务器。

我遇到了ant <scp>任务的问题,试图scp由通配符指定的一组目录(例如scp -r my / path /和/ directory_ * user @ remote:/ remote / path /到/目录),所以我一直在尝试使用<exec>任务来运行它。

见下面的代码:

<property name="built_directories" value="${workspace}/build_\*" />

<exec dir="${workspace}" executable="scp" failonerror="true">
    <arg line="-r -i ${user.home}/.ssh/id_rsa ${built_directories} deployer@@@{SERVER}:${remote_build_dir}"></arg>
</exec>

Jenkins / ant给了我错误:

[exec] / var / lib / jenkins / jobs / app-head-stage-deployment / workspace / build_ *:没有这样的文件或目录

我也尝试过以下操作,但收到同样的错误:

<exec dir="${workspace}" executable="scp" failonerror="true">
     <arg value="-r"></arg>
     <arg value="-i"></arg>
     <arg value="${user.home}/.ssh/id_rsa"></arg>
     <arg value="${built_directories}"></arg>
     <arg value="deployer@@@{SERVER}:${remote_build_dir}"></arg>
</exec>

我一直想弄清楚我是否需​​要以某种方式逃避星号以便shell正确解析它,但是没有找到太多信息。

编辑:

试用@ whiskeyspider的配置,见下文:

<exec dir="${workspace}" executable="sh" failonerror="true">
    <arg value="-c" />
    <arg value="scp" />
    <arg value="-r" />
    <arg value="-i" />
    <arg value="${user.home}/.ssh/id_rsa" />
    <arg value="${built_directories} deployer@@@{SERVER}:${remote_build_dir}" />
</exec>

我已尝试将最后一个arg拆分为单独的<arg>元素,但现在我收到以下错误:

[exec]用法:scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [exec] [-l limit] [-o ssh_option] [-P port] [-S program] [exec] [[user @] host1:] file1 ... [[user @] host2:] file2

我猜这意味着它无法正确识别这些论点。

1 个答案:

答案 0 :(得分:1)

您需要启动一个shell,以便扩展通配符。例如:

<exec executable="sh">
    <arg value="-c"/> 
    <arg value="scp"/>
    ...
</exec>