2016-08-05 5 views
4

次のようにすると、travisはまったく構築されません。 travis.ymlファイルを検証しようとすると、if文のすぐ上の行にカラム3の-文字が欠けていますが、エラーは以下のif文と関係しています。条件付きでスクリプトを実行してもtravis.ymlでは機能しません、なぜですか?

if文をスクリプトに移動する必要がありますか?

# Deploy 
after_success: 
    - ./tools/docker-push-container.sh 
    - if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then 
     ./.travis/success_message.sh 
    fi 

答えて

9

問題を引き起こしているYAML構文についていくつかの仮定をしています。あなたの代わりにこの書いまったく同じ

- The quick brown fox 
    jumped over the 
    lazy dog. 

それはされています:

- The quick brown fox jumped over the lazy dog. 

を。これは、そのシェルのフラグメントを意味し、あなたは」あなたのように「exend」以降の行をインデントすることでYAMLのライン、もし実際になり

- if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then 
     ./.travis/success_message.sh 
    fi 

:として書かれまし

if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then ./.travis/success_message.sh fi 

そして、あなたは、シェルでその行を実行しようとした場合、あなたが得る:

sh: -c: line 1: syntax error: unexpected end of file 

あなたはYAML文書に複数行のシェルスクリプトを含めたい場合は、あなたの最善の策は、そのままのブロックを使用することが考えられますオペレータ、|、次のように:

- | 
    if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then 
     ./.travis/success_message.sh 
    fi 

意図したように、なりますどの、中:また

if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then 
    ./.travis/success_message.sh 
fi 

、あなたはジュースができターミナルfi

- if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then 
     ./.travis/success_message.sh; 
    fi 

注新しい;:トンセミコロンを適切に利用します。結果は次のようになります。

if [ $TRAVIS_BRANCH == "master" && $TRAVIS_PULL_REQUEST == "false" ]; then ./.travis/success_message.sh; fi 

...これは完全に有効なシェル構文です。

0

私はそれが私のために動作しませんでした、あなたは&&を使用して||あなたが条件を分離する必要がある場合のでbashに可能性があり、larsksことによって、上記のソリューションを試みたが。

I(上記溶液に従う)

- if [ $TRAVIS_PULL_REQUEST == false && $TRAVIS_BRANCH == "development" ]; then 
     echo "# Bump version and flyway migrate db"; 
    else 
     echo "Skip version increment!"; 
    fi 

次を有し、私はまた、Travis Lint.travis.ymlをチェックし、それが有効なものとして示すが、以下に示すように、上記にも述べたように、分離することができるbashに記載このSO Questionに私は

- if [ $TRAVIS_PULL_REQUEST == false ] && [ $TRAVIS_BRANCH == "development" ]; then 
      echo "# Bump version and flyway migrate db"; 
     else 
      echo "Skip version increment!"; 
     fi 

そしてトラヴィスがが働いてビルドする以下のように変更しました。上記の理由から有効です。& &および||をbashで入力してください。他の誰かが同様の問題を抱えている場合に備えて共有するだけです。提案の回避策の

0

どれも私のために働いていない、私の代わりにこれを使用:

  • を[[( "$ TRAVIS_OS_NAME" == "OSX")& &( "$ TOXENV" == "py36" 場合)]];次にBREWアップデート。 fi
関連する問題