如何通过 powershell 使构建失败
How to fail the build via powershell
我有一个 Hudson 服务器,上面有一些作业。一个作业创建包,另一个作业部署包。创建和部署包基于 MSBuild 文件。该文件调用一些 powershell 脚本。在其中一个脚本中,存在如下所示的有效错误。不幸的是,我的 MSBuild 脚本没有将其视为错误并继续执行脚本的其余部分,当然这也完全失败了。
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
解决了这个问题。但是没有,还是我做错了什么?
现在我在调用实际的 powershell 命令之前添加了 <Error Condition="@(Packages) == ''" Text="Packages are missing!"/>
来检查这个特定情况。但我想知道如何通过 powershell 使构建失败并出现任何给定错误。
请尝试 escape special character (Dollar Sign $),并且可能 ' 登录您的命令:
<Target Name="UnpackProducts">
<Exec Command="$(PowerShellExe) -command "&{ $(PowershellScriptsFolder)\ExtractPackages.ps1 %27@(Packages)%27 ; exit %24lastexitcode }"" />
</Target>
这可能是你的错误。
我有一个 Hudson 服务器,上面有一些作业。一个作业创建包,另一个作业部署包。创建和部署包基于 MSBuild 文件。该文件调用一些 powershell 脚本。在其中一个脚本中,存在如下所示的有效错误。不幸的是,我的 MSBuild 脚本没有将其视为错误并继续执行脚本的其余部分,当然这也完全失败了。
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
解决了这个问题。但是没有,还是我做错了什么?
现在我在调用实际的 powershell 命令之前添加了 <Error Condition="@(Packages) == ''" Text="Packages are missing!"/>
来检查这个特定情况。但我想知道如何通过 powershell 使构建失败并出现任何给定错误。
请尝试 escape special character (Dollar Sign $),并且可能 ' 登录您的命令:
<Target Name="UnpackProducts">
<Exec Command="$(PowerShellExe) -command "&{ $(PowershellScriptsFolder)\ExtractPackages.ps1 %27@(Packages)%27 ; exit %24lastexitcode }"" />
</Target>
这可能是你的错误。