2012-02-16 19 views
0

私は、MSBuildスクリプトを使用して、コンパイル、テストの実行、およびmsdeployを使用したアプリケーションのパッケージ化を行う多数のビルドステップでビルドしています。 現在のところ、私のテストのいずれかが失敗した場合、パッケージはまだビルドされますが、ビルドが失敗した時点で停止するか、変数をMSBuildスクリプトに渡すことができます。ステージをテスト/コンパイルし、その変数の値に基づいてパッケージを作成します。プロジェクトの一つは、ビルドに失敗したとき 現在、私はこの情報が含まれているすべての変数を見つけることができませんでした。..TeamCityでビルドステップの終了コードを取得

答えて

1

設定StopOnFirstFailure=true

trueの場合、これ以上のプロジェクト が構築されます。

さらに、build parametersを定義し、条件付きTeamCitySetStatusを設定します。

+0

-sorry、私のセットを説明している必要があります。コンパイルを行うslnランナー、テストを実行するMSTest Runner、パッケージングを実行するMSBuildを持っています。私が後にしているのは、slnランナーおよび/またはmstestランナーの出力がmsbuildランナーに入ることです。 –

+0

今は明らかです。私は答えを更新しました。それが役に立てば幸い。 – KMoraz

1

これは、ステップごとに別々のステップと別々のビルドスクリプトがある場合、チームシップで簡単に実行できます。しかし、スクリプトを呼び出すために1つのスクリプトを使用して(ビルド、テスト、パッケージ化、デプロイ)、そして1つのチームシップステップだけを実行すると、たくさんのtryとcatchを追加する必要があります。キャッチ不可能なエラーでは機能しません。

psakeを使用することをお勧めします。 psakeを使用するには、2つのスクリプトが必要です。最初のものはチームシップによって運営されたものです。最初のスクリプトでは、psakeモジュールをインポートし、あなたのためにすべてを行うメインスクリプトを呼び出します。 2番目のスクリプトがどこにも失敗した場合は、スクリプトを停止させます(エージェントにはstoponfailure powershellポリシーがある場合)。 2番目のスクリプトは停止し、最初のスクリプトに戻ります。しかし、最初のスクリプトは失敗と見なさず、ビルドを成功として表示します。これを克服するには、最初のスクリプトにコードを追加します。

Import-Module .\psake\psake.psm1 

Invoke-Psake .\build-steps.ps1 @args 

if($psake.build_success -eq $false){ 
    write-host "There was an error running psake script" 
    exit 1 
} 
Remove-Module psake 

Powershell exit code is always 0 in teamcity build step

関連する問題