У меня есть сервер Hudson с несколькими вакансиями. Одно задание создает пакет, другой развертывает пакет. Создание и развертывание пакета основано на файле MSBuild. Этот файл вызывает некоторые скрипты powershell. В одном из скриптов есть допустимая ошибка, как показано ниже. К сожалению, мой сценарий MSBuild не воспринимает его как ошибку и продолжает остальную часть скрипта, который также завершается, конечно же, неудачно.Как сбой сборки через powershell
C:\Hudson\TRUNK\buildfiles\deploy\PowershellScripts\ExtractPackages.ps1 : Cannot bind argument to parameter 'Packages'
because it is an empty string.At line:1 char:249
+ ... nt\ONT\Package ''
C:\Hudson\TRUNK\buildfiles ...
+ ~~
+ CategoryInfo : InvalidData: (:) [ExtractPackages.ps1], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,ExtractPackages.ps1
Моя цель MSBuild выглядит следующим образом:
<Target Name="UnpackProducts">
<Exec Command="$(PowerShellExe) -command "&{ $(PowershellScriptsFolder)\ExtractPackages.ps1 '@(Packages)' ; exit $lastexitcode }"" />
</Target>
Я всегда думал, что ; exit $lastexitcode
решить эту проблему. Но это не так, или я делаю что-то неправильно?
На данный момент я добавил <Error Condition="@(Packages) == ''" Text="Packages are missing!"/>
перед вызовом команды powershell, чтобы проверить этот конкретный случай. Но я хотел бы знать, как провалить сборку через powershell с любой заданной ошибкой.
Я изменил его на ' 'который, кажется, делает трюк. Раньше у меня было это, как описано в моем первоначальном вопросе. Так было из-за некоторых устаревших сценариев, которые я использовал в качестве примера (powershell для меня немного новый). –
Willem