【问题标题】:Gradle executing curl doesn't upload filesGradle执行curl不上传文件
【发布时间】:2014-05-29 12:07:23
【问题描述】:

我有一个 Gradle 任务 publish 使用 curl 上传我的应用程序:

task publish(dependsOn: assembleRelease) << {
    def apkName = group + "-" + revision + "-" + android.defaultConfig.versionName + "-release";
    println "Publishing $project.buildDir/apk/" + apkName + ".apk to mobileappstore.com";
    exec {
        executable "/bin/sh"
        args "-c", "curl -k -u 'CD:w2'" +
                " -F upload=@$project.buildDir/apk/" + apkName +
                ".apk -F tags=" + apkName + " http://mobileappstore.com/AE/Build/Upload";
    }
}

但是,有一个错误。输出是:

Publishing [...]/main/build/apk/null-1.0-release.apk to mobileappstore.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (26) failed creating formpost data
:main:publish FAILED

FAILURE: Build failed with an exception.

* Where:
Build file '[...]/main/build.gradle' line: 103

* What went wrong:
Execution failed for task ':main:publish'.
> Process 'command '/bin/sh'' finished with non-zero exit value 26

我尝试的另一种方法:

task publish(dependsOn: assembleRelease) << {
    def apkName = android.defaultConfig.versionName + "-release";
    println "Publishing $project.buildDir/apk/" + apkName + ".apk to mobileappstore.com";
    exec {
        executable "/bin/sh"
        args "-c", "curl -k -u ", "-F upload=@$project.buildDir/apk/Ae-0.0.1-test.apk", "-F tags=AutoBuild" "https://mobileappstore.com/AE/Build/Upload";
    }
}

输出:

* What went wrong:
Execution failed for task ':main:publish'.
> No such property: https://mobileapptore.com/AE/Build/Upload for class:       org.gradle.process.internal.DefaultExecAction_Decorated

【问题讨论】:

    标签: android curl jenkins gradle


    【解决方案1】:

    args 行在 URL 前缺少逗号。此外,每个参数都需要单独传递(通常是在命令行上放置空格的任何位置)。还有,为什么不直接执行curl呢?

    【讨论】:

    • 如何在 gradle 中直接执行 curl?或者您的意思是在 Jenkins 中作为单独的步骤执行?
    • 我的意思是 executable "curl" 而不是 executable "/bin/sh"
    • 每个参数都需要单独传递(通常是在命令行中放置空格的任何位置)。
    • executable "curl"; args "-k", "-u", ...
    • exec{ 可执行文件 "curl"; args "-k", "-u", "'CI.:1'", "-F upload=@$project.buildDir/apk/", "$apkName","mobileapp.com/AERL-MOBL/Build/Upload" } } 现在像这样
    猜你喜欢
    • 2017-07-07
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2015-05-14
    • 2017-12-04
    相关资源
    最近更新 更多