2015-09-25 6 views
1

У меня есть сервер 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 &quot;&amp;{ $(PowershellScriptsFolder)\ExtractPackages.ps1 '@(Packages)' ; exit $lastexitcode }&quot;" />  
</Target> 

Я всегда думал, что ; exit $lastexitcode решить эту проблему. Но это не так, или я делаю что-то неправильно?

На данный момент я добавил <Error Condition="@(Packages) == ''" Text="Packages are missing!"/> перед вызовом команды powershell, чтобы проверить этот конкретный случай. Но я хотел бы знать, как провалить сборку через powershell с любой заданной ошибкой.

ответ

2

Пожалуйста, попробуйте escape special character (Dollar Sign $), и, вероятно, " знак в вашей команде:

<Target Name="UnpackProducts"> 
    <Exec Command="$(PowerShellExe) -command &quot;&amp;{ $(PowershellScriptsFolder)\ExtractPackages.ps1 %[email protected](Packages)%27 ; exit %24lastexitcode }&quot;" /> 
</Target> 

Возможно, что ваша ошибка.

+1

Я изменил его на ' 'который, кажется, делает трюк. Раньше у меня было это, как описано в моем первоначальном вопросе. Так было из-за некоторых устаревших сценариев, которые я использовал в качестве примера (powershell для меня немного новый). – Willem

Смежные вопросы