Получить код завершения шага сборки в TeamCity - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть сборка с несколькими шагами сборки, которая компилирует, запускает тесты и упаковывает приложение, используя msdeploy через скрипт MSBuild. В настоящее время, если какой-либо из моих тестов завершится неудачно, пакет все равно будет собран, однако я бы хотел, чтобы сборка остановилась в точке сбоя или могла передать переменную в скрипт MSBuild, который является кодом завершения теста / compile stage и создайте пакет на основе значения этой переменной. В настоящее время мне не удалось найти переменные, содержащие эту информацию ..

Ответы [ 2 ]

1 голос
/ 26 мая 2017

Это легко сделать в команде, если у вас есть отдельный шаг и отдельный скрипт сборки для каждого шага.Но если вы используете один единственный сценарий для выполнения каждой задачи (сборка, тестирование, пакетирование и развертывание) и только один шаг teamcity для вызова сценария, тогда это становится довольно трудным, поскольку вам придется добавить много попыток и поймать какиене будет работать с ошибками, не поддерживающими перехват.

Я предлагаю использовать psake.Для использования psake вам понадобится 2 скрипта.Первый - тот, который управляется командой.В первом скрипте вы импортируете модуль psake и вызываете основной скрипт, который все делает за вас.Если второй сценарий потерпит неудачу в любом месте, он остановит сценарий (при условии, что у ваших агентов есть политика stoponfailure powershell).Второй сценарий остановится и вернется к первому сценарию.Но первый скрипт не будет считать его неудачным и покажет сборку как успешную.Чтобы преодолеть это, вы добавляете фрагмент кода в свой первый скрипт.

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 всегда равен 0 на этапе сборки teamcity

1 голос
/ 16 февраля 2012

Set StopOnFirstFailure = true

Если true, когда один из проектов не удается построить, больше нет проектов будет построен.

Кроме того, определите параметры сборки и условно установите TeamCitySetStatus .

...