Android 对旋度的响应是从CircleCI上的gradle调用的空啤酒
我在gradle有一个任务,为android应用程序下载翻译Android 对旋度的响应是从CircleCI上的gradle调用的空啤酒,android,gradle,build.gradle,circleci,circleci-2.0,Android,Gradle,Build.gradle,Circleci,Circleci 2.0,我在gradle有一个任务,为android应用程序下载翻译 task('downloadTranslations') { ext.downloadPOTranslation = { stringsFile, projectId, lang -> def f = new File(stringsFile) if (f.exists()) { println("Delete file: " + f.absolutePath) f.del
task('downloadTranslations') {
ext.downloadPOTranslation = { stringsFile, projectId, lang ->
def f = new File(stringsFile)
if (f.exists()) {
println("Delete file: " + f.absolutePath)
f.delete()
}
println("Get lang: " + lang + " for project: " + projectId)
def requestArray = ['curl', '-X', 'POST', "\"https://api.poeditor.com/v2/projects/export\"",
'-d', 'api_token=\"{API_KEY}\"',
'-d', 'id=\"' + projectId + '\"',
'-d', 'language=\"' + lang + '\"',
'-d', 'type=\"android_strings\"']
println(requestArray)
def request = requestArray.execute()
request.waitFor()
def response = request.text
if (response.isEmpty()) {
def errorResponse = request.err.text
println("Error response from server:")
println(errorResponse)
} else {
println("Response from server:")
println(response)
}
...
}
doLast {
downloadPOTranslation("src/main/res/values/strings.xml", "projectNumber", "en-gb")
}
}
当我从CLI或Android Studio从本地计算机调用此任务时,一切正常:
Get lang: en-gb for project: 250751
[curl, -X, POST, "https://api.poeditor.com/v2/projects/export", -d, api_token="API_TOKEN", -d, id="250751", -d, language="en-gb", -d, type="android_strings"]
Response from server:
{"response":{"status":"success","code":"200","message":"OK"},"result":{"url":"https:\/\/api.poeditor.com\/v2\/download\/file\/FILENUMBER"}}
但当我在CircleCI上尝试完全相同的方法时,我得到了一个错误:
Get lang: en-gb for project: 250751
[curl, -X, POST, "https://api.poeditor.com/v2/projects/export", -d, api_token="API_TOKEN", -d, id="250751", -d, language="en-gb", -d, type="android_strings"]
FAILURE: Build failed with an exception.
* Where:
Build file '/home/circleci/code/app/build.gradle' line: 204
* What went wrong:
Execution failed for task ':app:downloadTranslations'.
> java.io.IOException: Stream closed
流关闭是因为response.isEmpty()
为true
且request.err
已关闭
所以为什么Gradle可以从服务器获取一个空响应,而在本地工作?
我还尝试使用SSH循环CircleCI并直接从CLI运行curl-响应不是空的。问题在于
“
和”
之间的差异
我不知道为什么,“curl”
可能被忽略了
所以
很好
def requestArray = ["curl",
"-X", "POST",
"-d","api_token=API_KEY",
"-d", "id=" + projectId + "",
"-d", "language=" + lang + "",
"-d", "type=android_strings",
"https://api.poeditor.com/v2/projects/export",]