gpt4 book ai didi

powershell - 如何在 TeamCity PowerShell 运行程序中传播错误

转载 作者:行者123 更新时间:2023-12-03 08:22:56 25 4
gpt4 key购买 nike

我有一个 TeamCity 7 构建配置,它几乎只是对 .ps1 的调用。使用各种 TeamCity 参数的脚本。
我希望这可能是一个简单的设置问题:

  • 脚本

    File


  • 脚本文件

    %system.teamcity.build.workingDir%/Script.ps1


  • 脚本执行模式

    Execute .ps1 script with "-File" argument


  • 脚本参数

    %system.teamcity.build.workingDir% -OptionB %BuildConfigArgument% %BuildConfigArg2%



  • 然后我会期望:
  • 如果我弄乱了我的参数并且脚本无法启动,则构建失败
  • 如果我的 Script.ps1 脚本抛出,构建失败
  • 如果脚本exit s 与非 0错误级别 我希望构建失败(也许这不是惯用的 PS 错误管理 - .ps1 是否应该仅在没有异常的情况下报告成功?)

  • 问题:它只是行不通。它应该如何工作?有什么我做错的事情可以通过选择不同的选项来解决吗?

    最佳答案

    正如 the friendly TeamCity manual 中所述:

    Setting Error Output to Error and adding build failure condition

    In case syntax errors and exceptions are present, PowerShell writes them to stderr. To make TeamCity fail the build, set Error Output option to Error and add a build failure condition that will fail the build on any error output.



    完成这项工作的关键是改变 两个默认值:
  • 的顶层构建失败条件 , 打开 构建运行程序记录了一条错误消息:
  • 在 [PowerShell] 构建步骤 , 显示高级选项并设置错误输出:错误


  • 在 9.1 中,以下工作(如果它也适用于早期版本,我不会感到惊讶):
  • 使用默认选项创建 PowerShell 构建步骤
  • 将下拉列表更改为脚本:源代码
  • 添加 trap { Write-Error "Exception $_" ; exit 98 }在脚本顶部
  • (对于适合 TeamCity 构建脚本的脚本类型,可选但更正确的 IMO)

    显示高级选项并打开选项:添加 -NoProfile 参数
  • (可选,但对我来说这应该是默认值,因为它呈现得更清晰 as suggested by @Jamal Mavadat )

    显示高级选项并打开错误输出:错误

    (旁白@JetBrains:如果标签是“将标准错误输出格式设置为”,那么误导性会降低)

  • 这包括以下情况:
  • 解析错误 [冒泡为异常并立即停止执行]
  • 异常(exception) [ throw n 直接或间接在您的 PS 代码中显示并触发 TC 的退出代码以停止构建]
  • 一个明确的 exit n在脚本中传播到构建(如果非零则失败)
  • 关于powershell - 如何在 TeamCity PowerShell 运行程序中传播错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647987/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com