1

我使用在 Teamcity 中运行的 psake 编写了一个构建脚本。

我有 Teamcity 6.0,所以我从 .cmd 运行 psake,但我认为这不会改变任何东西。

一切正常,但我有两个问题。

  1. Nunit 没有与 Teamcity 通信,因此当测试失败时,Teamcity 会说一切正常。

  2. MsBuild 的行为相同。即使构建失败,Teamcity 也会报告成功。

我想知道如何让 Teamcity 检测到这些故障。

这是我的示例脚本:https ://github.com/MikeEast/BuildTests/blob/master/build/build.ps1

4

2 回答 2

3

您可能需要通过其简单而优雅的构建状态通知系统通知 Teamcity 。

例如,您可以在 powershell 脚本期间将以下消息输出到标准输出。

##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 运行器,我还将 NUUnit 控制台放在我的构建文件夹中,然后使用每个 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 回答