如何在Travis CI配置文件(YAML)中正确使用curl?

如何在Travis CI配置文件(YAML)中正确使用curl?,curl,yaml,travis-ci,Curl,Yaml,Travis Ci,嗯。这让我渐渐发疯。 我为我的一个项目在Travis上建立了CI。我正在运行一些JUnit测试,我想将测试结果上传到我自己的服务器上,这样浏览它们就容易多了 基本上,我所要做的就是称之为: curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F filedata=@file.txt 这就是我在.travis.yml文件中要做的 after_script: - curl -H 'Authorization

嗯。这让我渐渐发疯。 我为我的一个项目在Travis上建立了CI。我正在运行一些JUnit测试,我想将测试结果上传到我自己的服务器上,这样浏览它们就容易多了

基本上,我所要做的就是称之为:

curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F filedata=@file.txt
这就是我在.travis.yml文件中要做的

after_script:
 - curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F filedata=@file.txt
问题是,对于上面这行,我得到一个错误,如下所示:

$ {:"curl -H '\"Authorization"=>"Token someToken\"' -X POST http://my.server.com -F filedata=@file.txt"}
/home/travis/build.sh: line 45: Token someToken"' -X POST http://my.server.com -F filedata=@file.txt}: No such file or directory
我了解到,在YAML中,冒号表示一对键值,我发现可以使用引号来转义冒号

这就是我被困的地方。我试着用很多不同的方法引用这些引语,但每次都会再次出现同样的错误

例如:

curl -H '"Authorization: Token someToken"'
curl -H "\"Authorization: Token someToken\""
curl -H "'Authorization: Token someToken'"
curl -H '"Authorization": Token someToken'
我觉得自己很愚蠢,我知道解决这个问题可能很简单,但我已经体验过“转义引号同时转义引号”的事情,如果有人能给我指出正确的方向,我将非常感激

当我试图通过这些问题来解决我的问题时,我也在链接这些问题:


好的-通过创建简单的bash脚本,我成功地解决了(或破解了)这个问题:

#!/bin/bash
curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F filedata=@file.txt
然后我继续调用.travis.yml文件中的脚本:

- ./upload_script.sh
所有的功劳都归功于@абчббббббббббббб


任何其他更好的解决方案都非常受欢迎。

在YAML中,冒号是分隔映射键和值的分隔符

您现在拥有的:

curl -H 'Authorization: token someToken' "https://api.github.com/repos/:owner/:repo/releases/tags/$TRAVIS_TAG"
​ 是一个带有key
curl-H'Authorization
和value
token someToken'的映射https://api.github.com/repos/:owner/:repo/releases/tags/$TRAVIS_标签“
。您可以看到这是如何潜入构建脚本的

您需要的是正确引用的字符串:

after_deploy:
  - "curl -H 'Authorization: token someToken' \"https://api.github.com/repos/:owner/:repo/releases/tags/$TRAVIS_TAG\""

您可以更改语法并直接运行它

松弛网钩示例

 - 'curl args:  -X POST -H ''Content-type: application/json'' --data ''{"text":"Hello, World!"}'' https://hooks.slack.com/services/####/###############'

您可以执行
-“curl-H”授权:tokensometoken'-X POST吗http://my.server.com -F filedata=@file.txt“
?不幸的是,我得到了相同的错误。此外,在Travis日志文件中,似乎忽略了引号。另一个可能不可取的选择是将shell脚本与该命令一起使用(或生成该命令,如果适用)并运行该命令。我看到的可能重复是早些时候由аббчэээбббббббб。它是如何失败的?我在我的.tarvis文件中有以下内容,运行良好:
成功后:-echo somejson>buildset.json-“curl-H”Content Type:application/json'-request POST--data@buildset.json\”https://hooks.website.com/catch/jhsgdjsag76t76\“”
但是当我像下面这样使用它时,它失败了<代码>成功后:-echo somejson>buildset.json-if[“$TRAVIS\u PULL\u REQUEST”!=“false”];然后“curl-H”内容类型:application/json'--request POST--data@buildset.json\”https://hooks.website.com/catch/jhsgdjsag76t76\"" ; fi这里出了什么问题@班扎伊曼