首页 > 解决方案 > 通过Jenkins运行Powershell脚本时如何修复“脚本返回退出代码1”?

问题描述

我有一个运行一些 Unity 单元测试的 Powershell 脚本。失败时,这将返回代码 1,Jenkins 将其解释为失败并停止当前构建。我该如何避免这种行为?

注意:这个问题与这个问题几乎相同,但是那个问题使用 bash,所以我不能将它应用于我的问题。换句话说,我如何模仿set +ePowershell 中的行为?或者,我如何告诉 Jenkins 忽略这些脚本返回代码并继续构建?

标签: powershelljenkins

解决方案


如何模仿set +ePowershell 中的行为

您不必这样做 - 这是对外部程序的调用永远不会[1]导致执行过早停止的默认行为,即使它们报告非零退出代码也是如此。

或者,我如何告诉 Jenkins 忽略这些脚本返回代码并继续构建?

确保您的脚本始终以 终止exit 0确实是确保 Jenkins 不认为脚本调用失败的正确方法(尽管您将丢失有关测试是否失败的信息)。


[1]由于 PowerShell 7.1 之前的缺陷行为,它可能会意外2>发生:如果您使用重定向并且$ErrorActionPreference = 'Stop'碰巧生效,则在实际接收到 stderr 输出时会发生脚本终止错误。还有未决的 RFC #277,它建议引入一种选择加入机制,以便将外部程序调用正确集成到 PowerShell 的错误处理中。


推荐阅读