簡體   English   中英

Ant 在中找不到通配符目錄<exec>任務</exec>

[英]Ant cannot find wildcard directory in <exec> task

我正在使用 Jenkins/ant 將我的應用程序部署到遠程服務器。

我遇到了 ant <scp>任務的問題,因為它試圖對通配符指定的一組目錄進行 scp(例如 scp -r my/path/and/directory_* user@remote:/remote/path/to/directory),所以我一直在嘗試使用<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>

詹金斯/螞蟻給我錯誤:

[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] usage: 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

我猜這意味着它無法正確識別 arguments。

您需要啟動一個shell,以便擴展通配符。 例如:

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

我最終不得不引用字符串(盡管我可能已經找出需要 escaping 的特定字符:

<exec executable="sh" osfamily="unix">
    <arg value="-c"/> 
    <arg line="'chmod uga+x ${project.build.directory}/dist/bin/*.sh'"/>
</exec>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM