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

问题描述 投票:15回答:3

好这正在使我疯狂。我为我的一个项目在Travis上设置了CI。我正在运行一些JUnit测试,我想将测试结果上传到我自己的服务器上,因此浏览它们要容易得多。

基本上,我只想打电话给这个:

curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]

所以这就是我要在。travis.yml文件中执行的操作。

after_script:
 - curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]

问题是,对于上面的行,我收到一个看起来像这样的错误:

$ {:"curl -H '\"Authorization"=>"Token someToken\"' -X POST http://my.server.com -F [email protected]"}
/home/travis/build.sh: line 45: Token someToken"' -X POST http://my.server.com -F [email protected]}: 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'

我觉得自己很愚蠢,我知道解决问题的方法可能很简单,但是我已经体会到了“转义引号时转义引号”的问题,如果有人能指出正确的方向,我会非常感谢。

我也在尝试解决这些问题时也链接到这些问题:

Escaping colons in YAML

How to escape indicator characters (i.e. : or - ) in YAML

curl yaml travis-ci
3个回答
12
投票

在YAML中,冒号是分隔符,用于分隔映射键和值。

您现在拥有的是:

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

是具有键curl -H 'Authorization和值token someToken' "https://api.github.com/repos/:owner/:repo/releases/tags/$TRAVIS_TAG"的地图。您可以看到它如何渗透到构建脚本中。

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

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

8
投票

确定-通过创建简单的bash脚本,我设法解决(或破解)了这个问题:

#!/bin/bash
curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]

然后我继续在.travis.yml文件中调用脚本:

- ./upload_script.sh

所有学分归功于@набиячлэвэлиь,因为我在评论中建议我该解决方案。

[其他任何人-更好-解决方案都值得欢迎。


0
投票

您可以更改语法并使其直接运行。

© www.soinside.com 2019 - 2024. All rights reserved.