好这正在使我疯狂。我为我的一个项目在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'
我觉得自己很愚蠢,我知道解决问题的方法可能很简单,但是我已经体会到了“转义引号时转义引号”的问题,如果有人能指出正确的方向,我会非常感谢。
我也在尝试解决这些问题时也链接到这些问题:
在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\""
确定-通过创建简单的bash脚本,我设法解决(或破解)了这个问题:
#!/bin/bash
curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]
然后我继续在.travis.yml文件中调用脚本:
- ./upload_script.sh
所有学分归功于@набиячлэвэлиь,因为我在评论中建议我该解决方案。
[其他任何人-更好-解决方案都值得欢迎。
您可以更改语法并使其直接运行。