【问题标题】:How to fail the build via powershell如何通过powershell使构建失败
【发布时间】:2015-12-23 03:42:23
【问题描述】:

我有一个 Hudson 服务器,有几个 Job。一个作业创建一个包,另一个作业部署该包。创建和部署包基于 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 &quot;&amp;{ $(PowershellScriptsFolder)\ExtractPackages.ps1 '@(Packages)' ; exit $lastexitcode }&quot;" />     
</Target>

我一直认为; exit $lastexitcode 解决了这个问题。但它没有,还是我做错了什么?

现在我在调用实际的 powershell 命令来检查这个特定情况之前添加了&lt;Error Condition="@(Packages) == ''" Text="Packages are missing!"/&gt;。但我想知道如何在任何给定错误的情况下通过 powershell 使构建失败。

【问题讨论】:

    标签: powershell msbuild hudson


    【解决方案1】:

    请尝试escape special character (Dollar Sign $),并且可能' 登录您的命令:

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

    这可能是你的错误。

    【讨论】:

    • 我已将其更改为&lt;Exec Command="$(PowerShellExe) $(PowershellScriptsFolder)\ExtractPackages.ps1 '@(Packages)' ; exit $lastexitcode;" /&gt;,这似乎可以解决问题。早些时候,我就像我在原始问题中描述的那样。之所以这样,是因为我使用了一些遗留脚本作为示例(powershell 对我来说有点新)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2023-03-11
    • 2018-10-14
    • 2010-11-03
    • 1970-01-01
    相关资源
    最近更新 更多