2017-02-15 5 views
0

は最近トラストCIを使用してビルドテストを開始しました。わずか数日で長い道のりを歩み、それを楽しんでいますか?タグが存在する場合、トラップをスキップするようにする

持っているが正常に渡すことが、今のタグをプッシュに渡すだけで最初の試験で複数のPHP環境の結果の下に私のテストを実行している/レポに番号を構築し、

! [rejected] v2.2017.22 -> v2.2017.22 (already exists)

私はbashで失敗し、その後のテストビルドをそれはプッシュが次のようにあるんコード:私は(可能な限りシンプルに)やりたい何

before_deploy: - git config --global user.email "${GIT_EMAIL}" - git config --global user.name "${GIT_NAME}" - export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER - git tag $GIT_TAG -a -m "Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" - git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags

以下である、元私がここで達成したいと思っているものの非常に不自由な言葉を引用してください:)誰かがこれを達成するための非常に単純な行のbashで私を助けてくれることを願っています。

before_deploy: - git config --global user.email "${GIT_EMAIL}" - git config --global user.name "${GIT_NAME}" - export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER - git tag $GIT_TAG -a -m "Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" - git fetch --tags - #if tag $TRAVIS_BUILD_NUMBER already exists then - #don't push and exit with 0 - #else - git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags

答えて

1

git tagは(ifコマンドがエラーリターンコードを抑制し)、それをプッシュしようとする前にローカルで成功した場合あなたは、単にチェックすることができます。

... 
export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER 
git fetch --tags 
msg="Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" 
if git tag $GIT_TAG -a -m "$msg" 2>/dev/null; then 
    git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags 
else 
    echo Tag already exists! 
fi 

(ビルドが終了した後、タグ、ない前に。この方法で失敗をスキップし、実際のビルドのみにタグを付けることができます)

ビルドタグがすでに存在するかどうかは気になりますが、これはcを再現する確実な方法がないことを意味します未来のビルド。

+0

ありがとう、これは絶対的な治療のように動作します。私は代わりにbefore_deployのすべての単一の行をdeploy.shというbashスクリプトに変換しています。before_deployには1行しかありません: 'travis/deploy.sh 'を読み込みます。このコードは完全にタグを検出し、ビルドテストの残りの部分を押すのをスキップします:)私はあなたにその1つのための6つのパックがあります。 – MitchellK

+1

うれしかった! :) –

+0

私は問題をソートしたタグを押していますが、今は単純な.txtファイルにスクリプトを書き込んでコミットに追加することに固執しています。これについて新しい質問を開始し、コードを投稿するか、この質問に追加する必要がありますか? @ sir-athos – MitchellK

関連する問題