Teamcity не обнаруживает сбои msbuild и nUnit при запуске из powershell - PullRequest
1 голос
/ 22 октября 2011

Я написал скрипт сборки с использованием psake, который запускаю в Teamcity.

У меня есть Teamcity 6.0, поэтому я запускаю psake из .cmd, но я не думаю, что это что-то меняет.

Все работает нормально, но у меня две проблемы.

  1. Nunit не связывается с Teamcity, поэтому, когда тест не пройден, Teamcity говорит, что все в порядке.

  2. MsBuild ведет себя так же. Даже если сборка не удалась, Teamcity сообщает об успехе.

Я хотел бы знать, как заставить Teamcity обнаруживать эти сбои.

Вот мой пример сценария: https://github.com/MikeEast/BuildTests/blob/master/build/build.ps1

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

Вам, вероятно, потребуется уведомить Teamcity самостоятельно с помощью простой, но элегантной системы уведомлений о состоянии сборки .

Например, вы можете вывести следующее сообщение на стандартный выводво время вашего сценария powershell.

##teamcity[buildStatus status='FAILURE' text='Some error message']
2 голосов
/ 09 ноября 2011

То, как у меня работает TeamCity (с TeamCity версии 6.5.4, которую я должен добавить), заключается в использовании модуля TeamCity, который предоставляется при загрузке psake.

Добавьте это к вашему сценарию:

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

#Tasks here
...
Remove-Module teamcity

#End Of File

У меня есть папка сборки, в которую я поместил модуль, чтобы все мои сборки могли получить к ней доступ.

Тогда все получилось из коробки.

Я не использую встроенный NUnit Runner, но я также поместил консоль 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" }
    }
}
...