我正在jenkins中运行一个包含4个查询的psql脚本,并且由于一个小错字导致脚本失败但是构建被标记为成功:
TRUNCATE TABLE
INSERT 0 3331
INSERT 0 133
INSERT 0 151
psql:/home/BI/payments/paypal_payments.sql:196: ERROR: table name "pe" specified more than once
Finished: SUCCESS
任何人都知道如何正确地将构建标记为失败?
修改
显然Jenkins将所有构建标记为成功,如果最后一个命令是...... See this answer
有没有人知道如何在构建结束时从postgres记录或输出错误,以便jenkins理解这一点?
答案 0 :(得分:1)
假设您是从bash运行的,可以在shell脚本中使用它,将返回值存储在变量中,并使用正则表达式查找ERROR字符串的返回值。如果您发现它只是退出1'而詹金斯将失败。
答案 1 :(得分:0)
尝试使用'ON_ERROR_STOP'psql高级功能,查看this。我希望这有帮助!
答案 2 :(得分:0)
您可以使用Log Parser Plugin 使用该插件,您需要定义解析规则文件。在文件中,您将在实际控制台日志中显示的表达式之间映射到每个表达式的所需结果。 例子: 如果日志包含" ERROR",则设置错误结果:
error /ERROR/
你可以更具体 - 当psql错误时使用正则表达式标记错误:
error /psql.*ERROR:/
您可以使用更多标记:" ok"," wanring"," info"和"开始"。
选择包含解析规则的文件后,您可以决定是否在出现警告时将构建标记为不稳定,并在出现错误时将构建失败。
有关详细信息,请参阅链接中的插件wiki。
答案 3 :(得分:0)
如果您正在使用"执行shell"在Jenkins中,默认情况下,只要任何命令失败,它就会停止,并且构建将被标记为失败 即一旦命令返回非零退出代码 (您问题中的链接与使用Jenkins执行 Windows 批处理脚本)
如果执行成功,psql
命令返回退出代码0;如果脚本中发生错误(确实发生了错误),则exit code 3,和设置{{ 1}}变量(显然未设置)。
因此,设置ON_ERROR_STOP
似乎会导致ON_ERROR_STOP
(因此Jenkins)的行为与您预期的一样。