2016-01-08 17 views
11

これはゆっくりと私を夢中にしています。 私は自分のプロジェクトの1つとしてトラビスのCIをセットアップしました。私はいくつかのJUnitテストを実行しています。テスト結果を自分のサーバーにアップロードしたいので、ブラウズする方がはるかに簡単です。Travis-CI設定ファイル(YAML)でcurlを正しく使うには?

基本的に、私が望むすべてはこれを呼び出すことです:

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

だからこれは私が.travis.ymlファイルでやろうとしているものです。私はYAMLにコロンがキーと値とIのペアを表していることを学んできた

$ {:"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 

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

問題はラインのために、私はこのようになりますエラーを取得しています上記のことですコロンをエスケープするために引用符を使うことができます。

これは私が立ち往生している場所です。私はこれらの引用符をさまざまな方法で適用しようとしましたが、何度か同じエラーが繰り返されるたびに適用されました。例えば

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

+1

あなたが行うことができます - 「カール-H '認証:トークンsomeToken' -X POSTはhttp://my.server。com -F [email protected]@file.txt "'? –

+0

残念ながら、私は同じエラーが発生しています。また、Travisのログファイルでは、引用符が無視されているように見えます。 – scana

+1

もう1つ、 –

答えて

7

[OK]を - 私は解決(あるいはハック)するために管理してきた、これをシンプルなbashスクリプトを作成することによって問題、:

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

そして私は.travis.ymlファイルでスクリプトを呼び出すために進ん:

- ./upload_script.sh 

すべてのクレジットは、コメントの解決方法を私に示唆しています。

その他の解決策は歓迎されるものではありません。

7

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\"" 
+0

これは以前に提案されたことがわかりました。どのように失敗しましたか? – banzaiman

関連する問題