1

Teamcityで実行しているpsakeを使用してビルドスクリプトを作成しました。

私はTeamcity6.0を使用しているので、.cmdからpsakeを実行しますが、それによって何も変わるとは思いません。

すべてが正常に機能していますが、2つの問題があります。

  1. NunitはTeamcityと通信していないため、テストが失敗すると、Teamcityはすべてが正常であると言います。

  2. MsBuildは同じように動作します。ビルドが失敗しても、Teamcityは成功を報告します。

Teamcityでこれらの障害を検出する方法を知りたいです。

これが私のサンプルスクリプトです:https ://github.com/MikeEast/BuildTests/blob/master/build/build.ps1

4

2 に答える 2

3

おそらく、シンプルでありながらエレガントなビルドステータス通知システムを介してTeamcityに自分で通知する必要があります。

たとえば、PowerShellスクリプト中に次のメッセージをstdoutに出力できます。

##teamcity[buildStatus status='FAILURE' text='Some error message']
于 2011-10-22T16:09:14.213 に答える
2

TeamCityを機能させる方法(TeamCityバージョン6.5.4を追加する必要があります)は、psakeダウンロードで提供されているTeamCityモジュールを使用することです。

これをスクリプトに追加します。

...
Import-Module "$build_dir\psake\teamcity.psm1"

#Tasks here
...
Remove-Module teamcity

#End Of File

すべてのビルドがアクセスできるように、モジュールを配置したビルドフォルダーがあります。

その後、箱から出して動作しました。

ただし、組み込みのNUnitランナーは使用していません。また、ビルドフォルダーにNUNitコンソールを配置し、各UnitTestアセンブリでそれを呼び出しています。

Task Test -depends Build {
    $testAssemblies = (get-childitem $base_dir -r -i "*UnitTests.dll" -exclude "*.config" -Name | Select-string "bin")
    foreach($test_asm_name in $testAssemblies) {
        $full_test_assembly_name = "$base_dir\$test_asm_name"
        Exec { invoke-expression "$nunitconsole_path $full_test_assembly_name" }
    }
}
于 2011-11-09T19:00:03.747 に答える