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'
私は愚かで、これを修正するのはおそらく簡単なことだと思いますが、「引用符をエスケープしながら引用符をエスケープする」ことを感じました。誰かが私を正しい方向に向けることができれば、私は本当にありがたい。
問題を解決するためにそれらをフォローしようとしたときに、これらの質問にもリンクしています。
わかりました-簡単なbashスクリプトを作成することで、この問題を解決(またはハッキング)することができました。
#!/bin/bash
curl -H 'Authorization: Token someToken' -X POST http://my.server.com -F [email protected]
次に、.travis.ymlファイルのスクリプトを呼び出します。
- ./upload_script.sh
コメントでその解決策を提案してくれたすべてのクレジットは@набиячлэвэлиьに送られます。
他の-より良い-ソリューションは大歓迎です。
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\""