在 TeamCity 8 构建步骤中,PowerShell 退出代码始终为 0

2024-03-09

我们使用的是 TeamCity Enterprise 8.0.5。

我有一个运行 PowerShell (.ps1) 脚本的 TeamCity 构建步骤,如下所示:

try
{
    # Break something
    $a = 1 / 0
}
catch
{
    Exit 1
}

尽管如此,在构建日志中,该步骤成功并以代码 0 退出。

[10:02:18][步骤 2/3] 进程退出,代码为 0

如果脚本中有任何失败,我希望该步骤失败。我怎样才能做到这一点?


我刚刚发现这个帖子:

PowerShell 运行程序 - 脚本失败但构建成功 - “进程已退出,代码为 0” https://youtrack.jetbrains.com/issue/TW-21554

TeamCity 中存在一个错误,这意味着不会拾取非零 PowerShell 返回代码。

建议的解决方案是在检测到构建日志中的某些文本输出时创建构建失败条件。

然而,我的解决方案涉及一些不同的东西。

在 catch 块中,您只需使用写错误 https://learn.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Write-Error cmdlet:

catch
{
    Write-Error -Exception $_.Exception
}

然后您必须确保在 TeamCity 中正确设置两件事:

首先,构建步骤错误输出应设置为error, 并不是warning:

其次,在构建失败条件屏幕中,确保构建运行程序记录错误消息被检查:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 TeamCity 8 构建步骤中,PowerShell 退出代码始终为 0 的相关文章

随机推荐

  • WPF/C#:如何在 TabControl 中引用 TabItem?

    我确信我错过了一些简单的东西 但我必须承认 在这一点上我不知所措 我以编程方式将 TabItems 添加到我的主 TabControl 一个对应于用户选择打开的每个帐户 在创建和添加新的 TabItem 之前 我想检查用户是否已在另一个选项
  • 在 Gradle 和 IntelliJ 2016.3.5 中使用断点调试 JVM 应用程序(Java 或 Scala)

    我有一个 JVM 应用程序 需要在 IntelliJ 2016 3 5 中使用断点和 Gradle 任务 作为依赖项运行和测试 进行调试 关于如何使用 Gradle 和 IntelliJ 完成调试有多种来源 使用 IntelliJ 调试 G
  • Redis 作为消息代理

    Question 我想以发布 订阅的方式在应用程序之间传递数据 数据产生的速度可能比消耗的速度高得多 并且消息会丢失 这不是问题 想象一下一个快速传感器和一个慢速传感器数据处理器 为此 我使用 redis pub sub 并编写了一个充当订
  • 更改 KeyPress 上 JTextField 的大小

    当用户在文本字段中输入文本时 我必须扩展 KeyPressed 事件上 JTextField 的大小 请告诉我如何实现此目的 提前致谢 好的 跳起来 我们假设问题是 如何调整 JTextField 的宽度以始终适合其内容宽度 平时的合作者
  • p:commandButton 立即 = true

    当我声明时会采取什么行动immediate true 在命令按钮中 文档说 布尔值 确定操作事件的phaseId 当在 应用请求值 阶段处理 true 操作时 当在 调用应用程序 阶段处理 false 时 但是 我不明白 有人可以解释一下吗
  • 如何防止滚动条与内容重叠?

    我有一个预格式化代码块 它水平溢出 因此有一个水平滚动条允许用户查看内容 overflow auto 然而 在 IE7 也许其他 IE 版本 中 滚动条与我的内容的最后一行重叠 当只有一行内容时 这尤其令人恼火 我已经尝试过列出的解决方案h
  • 沿路径长度线性填充 SVG 动画

    我有一个 SVG 文件 它代表薄形 我想制作一个动画 以便整个形状似乎正在被拉出来 我所说的三星 Galaxy S 品牌的 S 标志示例 https codepen io anon pen MGawzy https codepen io a
  • 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”

    我正在部署一个新网站作为我的主网 站 它运行得很好 我的根 url 下的所有应用程序都可以正常工作 除了一个 它是一个被大量使用的遗留系统 c net 不幸的是 我无法访问源代码 当我运行旧应用程序时www mysite com crm h
  • 现在的 Unix 时间戳输出为 1970 [重复]

    这个问题在这里已经有答案了 我想在将来生成一些 unix 时间戳 因此我使用像这样的生成器unixtimestamp com http www unixtimestamp com 但是 当我在 chrome 或 Firefox 的 cons
  • Xlwings 从定义的名称中获取值

    我有一个具有定义名称的 Excel 单元格 A1 已指定名称 myName xlwings 有没有办法从其名称而不是其坐标中获取其内容 它应该是相同的 title coord next wb defined names myName des
  • 第三方代码正在修改 FPU 控制字

    简介 又长又无聊的部分 问题在最后 我对不断更改 FPU 控制字的第三方 COM 组件感到非常头疼 我的开发环境是Windows和Visual C 2008 正常的FPU控制字指定在各种情况下不应抛出异常 我已经通过查看验证了这一点 CW
  • 如何在Redis中使用java对象作为值

    我对 Redis 还很陌生 我下载了 Jedis 并将其添加到我的类路径中 但是 它没有提供将 java 对象存储为 值 的方法 我是否遗漏了一些东西 或者 Jedis 没有提供将 java 对象存储为值的方法 谢谢 文卡特 您可以使用基于
  • Jenkins - 动态扩展选择参数来填充多级多选列表

    有没有办法使用动态 模式 扩展选择参数 https wiki jenkins ci org display JENKINS Dynamic Extended Choice Parameter plugin与一个绑定扩展选择参数 https
  • 未找到类型类 User 的属性 findOne()

    我搜索了很多页面 但没有找到答案 所以我粘贴了整个代码 我正在测试测试类并收到类似 Caused by org springframework beans factory BeanCreationException Error create
  • 在 SQL Server 中创建一个函数,以电话号码作为参数并返回随机数

    我希望有人可以在这里帮助我 因为谷歌并没有像我希望的那样及时 我对 SQL Server 比较陌生 所以这是我为自己设定的第一个功能 该函数的概要是 它有一个电话号码 varchar 15 作为参数 它检查这个号码是否是一个正确的号码 即它
  • 如何在c++中确定win32线程处于Wait或Join或Sleep状态

    我实际搜索的是 net 的 c win32 等效项线程状态枚举 http msdn microsoft com en us library system threading threadstate aspx 有什么建议么 这些之间的区别很小
  • 您可以将 Tee-Object 重定向到标准输出吗?

    我正在编写一个脚本 我想传递这些值 但也想看到它们显示 Get Content data txt Tee Object data processor exe But Tee Object https learn microsoft com
  • 无法将主机名“postgres”转换为地址:未知主机

    设置 Django 项目 但我收到有关设置的警告postgres如标题所示 但我不确定这是什么意思 完整警告消息 RuntimeWarning Got an error checking a consistent migration his
  • 如何使用纯 HTTP 身份验证和 PHP 在 Apache 下获取经过身份验证的用户名?

    首先 让我们先考虑安全因素 我在 Apache 下使用简单身份验证来实现一次性 仅供内部使用 非互联网连接的 LAN PHP Web 应用程序 如何在 PHP 中获取经过 HTTP 身份验证的用户名 我认为你在追求这个 username S
  • 在 TeamCity 8 构建步骤中,PowerShell 退出代码始终为 0

    我们使用的是 TeamCity Enterprise 8 0 5 我有一个运行 PowerShell ps1 脚本的 TeamCity 构建步骤 如下所示 try Break something a 1 0 catch Exit 1 尽管如