web-dev-qa-db-ja.com

Travis-CI構成ファイル(YAML)でcurlを適切に使用するにはどうすればよいですか?

OK。これはゆっくりと私を夢中にさせています。プロジェクトの1つとして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ではコロンがKey-Valueのペアを表すことを学び、引用符を使用してコロンをエスケープできることを発見しました。

まあ-これは私が立ち往生している場所です。私はそれらの引用符をさまざまな方法で適用しようとしましたが、どういうわけか毎回同じエラーが繰り返し発生します。

例えば:

curl -H '"Authorization: Token someToken"'
curl -H "\"Authorization: Token someToken\""
curl -H "'Authorization: Token someToken'"
curl -H '"Authorization": Token someToken'

私は愚かで、これを修正するのはおそらく簡単なことだと思いますが、「引用符をエスケープしながら引用符をエスケープする」ことを感じました。誰かが私を正しい方向に向けることができれば、私は本当にありがたい。

問題を解決するためにそれらをフォローしようとしたときに、これらの質問にもリンクしています。

YAMLでのコロンのエスケープ

YAMLでインジケーター文字(つまり:または-)をエスケープする方法

14
scana

わかりました-簡単なbashスクリプトを作成することで、この問題を解決(またはハッキング)することができました。

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

次に、.travis.ymlファイルのスクリプトを呼び出します。

- ./upload_script.sh

コメントでその解決策を提案してくれたすべてのクレジットは@набиячлэвэлиьに送られます。

他の-より良い-ソリューションは大歓迎です。

7
scana

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\""
12
banzaiman