Bash 使用ant将工件上载到artifactory,服务器上的curl结果为空文件

Bash 使用ant将工件上载到artifactory,服务器上的curl结果为空文件,bash,curl,ant,artifactory,put,Bash,Curl,Ant,Artifactory,Put,我目前正强烈反对这种(错误的)行为。 当我在ant中执行一个CURL请求时,上传会生成一个大小为size=0的文件,当我在shell中执行相同的请求时,文件大小正确 ANT目标输出: [echo] path.toFile=/home/marcel/gitrepos/<repo>/source/<file>.zip [echo] path.targetFile=target/<file>.zip [echo] ------------ [echo] cu

我目前正强烈反对这种(错误的)行为。 当我在ant中执行一个CURL请求时,上传会生成一个大小为size=0的文件,当我在shell中执行相同的请求时,文件大小正确

ANT目标输出:

 [echo] path.toFile=/home/marcel/gitrepos/<repo>/source/<file>.zip
 [echo] path.targetFile=target/<file>.zip
 [echo] ------------
 [echo] curl -k -H 'X-JFrog-Art-Api: <API-KEY>
 [echo] ' -T "/home/marcel/gitrepos/<repo>/delivery/<file>.zip" "https://<company>.de/artifactory/stage-dev/target/<file>.zip"
 [echo] ------------
 [exec]   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 [exec]                                  Dload  Upload   Total   Spent    Left  Speed
 [exec] 
 [exec] {
 [exec]   "repo" : "stage-dev",
 [exec]   "path" : "/target/<file>.zip",
 [exec]   "created" : "2018-02-27T16:12:25.397Z",
 [exec]   "createdBy" : "<user>",
 [exec]   "downloadUri" : "https://<company>.de:443/artifactory/stage-dev/target/<file>.zip",
 [exec]   "mimeType" : "application/zip",
 [exec]   "size" : "0",
 [exec]   "checksums" : {
 [exec]     "sha1" : "da39a3ee5e6b4b0d3255bfef95601890afd80709",
 [exec]     "md5" : "d41d8cd98f00b204e9800998ecf8427e"
 [exec]   },
 [exec]   "originalChecksums" : {
 [exec]   },
 [exec]   "uri" : "https://<company>.de:443/artifactory/stage-dev/target/<file>.zip"
 [exec] }
 [exec]   0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0  0 5397k    0   752    0     0   2961      0 --:--:-- --:--:-- --:--:--  2972
[echo]path.toFile=/home/marcel/gitrepos//source/.zip
[echo]path.targetFile=target/.zip
[回声]------------
[echo]curl-k-H'X-JFrog-Art-Api:
[echo]'-T”/home/marcel/gitrepos//delivery/.zip“”https://.de/artifactory/stage-dev/target/.zip"
[回声]------------
[exec]%总计%收到%X平均速度时间电流
[exec]数据加载上载总左速度
[行政长官]
[行政长官]{
[exec]“回购”:“阶段开发”,
[exec]“路径”:“/target/.zip”,
[exec]“已创建”:“2018-02-27T16:12:25.397Z”,
[exec]“createdBy”:“创建”,
[exec]“下载URI”:https://.de:443/artifactory/stage-dev/target/.zip“,
[exec]“mimeType”:“应用程序/zip”,
[exec]“大小”:“0”,
[exec]“校验和”:{
[执行官]“sha1”:“da39a3ee5e6b4b0d3255bfef95601890afd80709”,
[exec]“md5”:“d41d8cd98f00b204e9800998ecf8427e”
[exec]},
[exec]“原始检查”:{
[exec]},
[exec]“uri”:https://.de:443/artifactory/stage-dev/target/.zip“
[exec]}
[exec]0 0 0 0 0 0 0------------------------------------------------------------------------0 0 5397k 0 752 0 2961 0------------------------------------------------------2972
ANT代码片段: 为了使用ant执行CURL命令,我使用了以下代码段:

<property name="artifactory.url" value="https://<company>.de/artifactory/stage-dev/"/>
    <target name="upload-latest-zip" depends="-read-api-key" description="=> upload latest zip to artifactory. requires (apikey-file).">
        <property name="path.toFile" location="source/${<file>}"/>
        <property name="path.targetFile" value="target/${<file>}"/>
        <echo message="------------" />
        <echo message="curl -k -H 'X-JFrog-Art-Api: ${apikey}' -T ${path.toFile} &quot;${artifactory.url}/${path.targetFile}&quot;" />
        <echo message="------------" />
        <exec executable="curl">
            <arg line="-k"/>
          <arg line="-H"/>
          <arg line="'X-JFrog-Art-Api: ${apikey}'"/>
          <arg line="-T"/>
          <arg line="${path.toFile}"/>
          <arg line="&quot;${artifactory.url}/${path.targetFile}&quot;"/>
        </exec>
    </target>

外壳输出 为了测试CURL-it-self,我使用了ant输出中的回声命令

marcel@Ubuntu:~/gitrepos/<repo>$ curl -k -H 'X-JFrog-Art-Api: <API-KEY>' -T "/home/marcel/gitrepos/<repo>/delivery/<file>.zip" "https://<company>.de/artifactory/stage-dev/target/<file>.zip"
{
  "repo" : "stage-dev",
  "path" : "/target/<file>.zip",
  "created" : "2018-02-27T16:12:25.397Z",
  "createdBy" : "<user>",
  "downloadUri" : "https://<company>.de:443/artifactory/stage-dev/target/<file>.zip",
  "mimeType" : "application/zip",
  "size" : "5526727",
  "checksums" : {
    "sha1" : "732c7ee866c06d2988abde8ec22ad1f9268f89fb",
    "md5" : "285c135f1551c2c07dec296c01d93160"
  },
  "originalChecksums" : {
  },
  "uri" : "https://<company>.de:443/artifactory/stage-dev/target/<file>.zip"
marcel@Ubuntu:~/gitrepos/$curl-k-H'X-JFrog-Art-Api:'-T”/home/marcel/gitrepos//delivery/.zip“”https://.de/artifactory/stage-dev/target/.zip"
{
“回购”:“阶段开发”,
“路径”:“/target/.zip”,
“已创建”:“2018-02-27T16:12:25.397Z”,
“createdBy”:“,
“下载URI”:https://.de:443/artifactory/stage-dev/target/.zip“,
“mimeType”:“应用程序/zip”,
“大小”:“5526727”,
“校验和”:{
“sha1”:“732c7ee866c06d2988abde8ec22ad1f9268f89fb”,
“md5”:“285c135f1551c2c07dec296c01d93160”
},
“原始检查”:{
},
“uri”:https://.de:443/artifactory/stage-dev/target/.zip“
此问题中未显示
为了验证此行为,我还围绕(upload)CURL命令包装了一个shell脚本,并从ant调用了shell脚本,而不是直接调用CURL。但它会导致相同的行为

目前我们只考虑用shell替换ant脚本。无论如何,我真的想知道为什么会发生这种行为

有人有好主意吗?:)

其他信息:

 [echo] path.toFile=/home/marcel/gitrepos/<repo>/source/<file>.zip
 [echo] path.targetFile=target/<file>.zip
 [echo] ------------
 [echo] curl -k -H 'X-JFrog-Art-Api: <API-KEY>
 [echo] ' -T "/home/marcel/gitrepos/<repo>/delivery/<file>.zip" "https://<company>.de/artifactory/stage-dev/target/<file>.zip"
 [echo] ------------
 [exec]   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 [exec]                                  Dload  Upload   Total   Spent    Left  Speed
 [exec] 
 [exec] {
 [exec]   "repo" : "stage-dev",
 [exec]   "path" : "/target/<file>.zip",
 [exec]   "created" : "2018-02-27T16:12:25.397Z",
 [exec]   "createdBy" : "<user>",
 [exec]   "downloadUri" : "https://<company>.de:443/artifactory/stage-dev/target/<file>.zip",
 [exec]   "mimeType" : "application/zip",
 [exec]   "size" : "0",
 [exec]   "checksums" : {
 [exec]     "sha1" : "da39a3ee5e6b4b0d3255bfef95601890afd80709",
 [exec]     "md5" : "d41d8cd98f00b204e9800998ecf8427e"
 [exec]   },
 [exec]   "originalChecksums" : {
 [exec]   },
 [exec]   "uri" : "https://<company>.de:443/artifactory/stage-dev/target/<file>.zip"
 [exec] }
 [exec]   0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0  0 5397k    0   752    0     0   2961      0 --:--:-- --:--:-- --:--:--  2972
使用过的软件:

  • Ubuntu 16.04.3 LTS
  • GNUBash,版本4.3.48(1)-发行版(x86_64-pc-linux-GNU)
  • Apache Ant(TM)版本1.10.1于2017年2月2日编译
  • curl 7.47.0(x86_64-pc-linux-gnu)
  • java-8-openjdk-amd64
  • Artifactory Enterprise 5.3.0

  • 变量${path.toFile}的值是多少

    [echo] path.toFile=/home/marcel/gitrepos/<repo>/source/<file>.zip
    
    [echo] ' -T "/home/marcel/gitrepos/<repo>/delivery/<file>.zip" "https://<company>.de/...
    
    [echo]path.toFile=/home/marcel/gitrepos//source/.zip
    [echo]'-T”/home/marcel/gitrepos//delivery/.zip“”https://.de/...
    
    /来源或/交付?
    在ant中是否设置了两次相同变量的值?因为属性在ant中是不可变的,所以设置两次/更新它不会起作用。

    有点晚,但在我的例子中,API-KEY最后有一个换行符。 使用后,它工作了

    <target name="upload">
        <loadfile property="apikey" srcFile="${user.home}/.artifactory-secrets">
            <filterchain>
                <striplinebreaks/>
                <replaceregex pattern=".*:(.*)" replace="\1"/>
            </filterchain>
        </loadfile>
        <echo message="${basedir}" />
        <exec executable="curl" dir="${basedir}">
            <arg value="-svL" />
            <arg line="-H 'X-JFrog-Art-Api:${apikey}'" />
            <arg value="-H" />
            <arg value="content-type:application/octet-stream" />
            <arg value="-T" />
            <arg file="${basedir}/${dist}/myfile-${appversion}.jar" />
            <arg value="https://artifactory.appdomain.cloud/artifactory/generic-local/" />
        </exec>
    </target>
    
    
    
    变量包含我要上载的文件的绝对路径。可能是我删除机密信息时出错了。但是设置正确。