2016-11-15 14 views
-1

シンプルシェルスクリプトの質問。 BBにパイプラインを設定し、私が移植しているジョブの1つは、いくつかのコマンドを使ってバウアーバージョンを増やすことです。私はこれを別々のジョブに分割して、パッケージにバンプが発生して自動実行されないようにし、repoにコミットします。だから私がやろうとしているのは、タスクが始まり、git logコマンドを実行し、最後のコミットメッセージをチェックし、それがあらかじめ定義されたメッセージと一致すれば終了することです。それ以外の場合は続行します。最新のgitコミットメッセージをチェックし、bashでif elseチェックを実行するにはどうすればよいですか?私はあなたがしようとしていると信じて何シェルスクリプトでgitログを確認する

#! /bin/bash 

git log -1 

if git log -1 === "pre-defined message"; 
    then 
    echo "already pushed and bumped exiting" 
    exit 1 
    else 
    echo "not bumped -- continuing job" 
    ./setup-git.sh 
fi 
+0

質問は何ですか? – codeforester

+0

最後にgit logコミットメッセージを読んで、bashのelse文を実行できたかどうかです。私はJavaScriptマインドではシェルスクリプトの詳細を知る必要がありました。 :) –

答えて

1

は、ビルドまたは他のステップを引き起こしてから、特定のコミットを無視している....これは手動ビルド環境で正常に動作するかもしれないが、標準のビルドツールがあることを行っています問題がある。

私はジェンキンスにこれで苦労し、決して終わることのないビルドサイクルで、その結果、バックレポにコミットビルドをトリガし、ビルドの一部として使用し、修正サポートファイル。

私の解決策は、リポジトリをあるディレクトリのソースと別のディレクトリのサポートファイルに分けて、Jenkinsの除外領域を追加して、ビルドによって生成されたコミットが次のポーリングで何もしないようにすることでしたコミットされたファイルはビルド中の実際のプロジェクトとは何の関係もないためです)。やや鈍いですが、うまくいくようです。

それがあなたが求めているものではない場合は、実際に質問をしてから、寄稿者が作業するコンテキストがあります。

#! /bin/bash 

MESSAGE=$(git log -1 HEAD --pretty=format:%s) 

if [[ "$MESSAGE" == "This goes into next release" ]]; then 
    echo "already pushed run grunt and exit" 
    grunt build 
    echo "nothing to see here -- move along" 
else 
    echo "not bumped -- continuing job" 
    git config --global user.email "[email protected]" 
    git config --global user.name "Blah Blah" 
    git remote set-url origin https://user:[email protected]/myawesomegitrepo.git 
    grunt releaseme 
    git config --global push.default matching 
    git commit dist/destro -m "This goes into next release" 
    git push --tags 
fi 

クレジットジェームズ・ナインへのために:メッセージがすでに受信した場合にインストールされ、私はNPMを実行しないために、セットアップ別のシェルスクリプトに必要なものの、私はパイプラインのうち、必要なものを満たすように思われる解決策を見つけた

+0

それは私の元々のアイデアであり、もともとBambooでそれを処理しなければならなかったのです。これは、すべてのコミットがPRを介してマージされている限り、機能ブランチ/リリースブランチ戦略に基づいて動作するはずです。それを正しいものにするために私をしばらく時間がかかりましたが、上記の私のソリューションの投稿に感謝しました。私が今問題を抱えているのは、else文がtrueを返す場合、最初のシェルスクリプトから別のシェルスクリプトを取得することだけです。 –

関連する問題