gpt4 book ai didi

jenkins - 为什么 Groovy 的 powerassert 在 Jenkins 工作中不起作用

转载 作者:行者123 更新时间:2023-12-02 15:51:22 24 4
gpt4 key购买 nike

Power assertions在/script 中工作,但不在 Jenkinsfile 驱动的作业中工作。为什么?有没有办法让它发挥作用?

在 Jenkinsfile 作业中:

assert 1 == 2

at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:404)
... wall of stack trace

在/脚本窗口中

Assertion failed: 

assert 1 == 2
|
false

在这个简单的例子中,很容易弄清楚发生了什么。实际上,“==”的一个或两个操作数都是变量。在/script 版本中,它将显示值(请参阅上面的链接)。在 Jenkinsfile 控制台日志中,您只需按原样获取断言语句,没有任何提示。

在@daggett问题后添加:

node ()
{
stage('assert')
{
try
{
two = 2
assert 1==two
}
catch(Throwable t)
{
println t
error "assert failed"
}
}
}

输出:

Assertion failed: 

assert 1==two

最佳答案

据我所知不可能。 Jenkins 管道 Groovy DSL 在解释 Groovy 期间使用自定义 CPS 解释器。这意味着它绕过/覆盖了 groovy 的许多标准实现,因此也绕过了断言实现。 Jenkins Pipeline CPS 的断言实现可以在 here 找到。 ,而真正的 groovy 实现使用 this断言评估期间的类,以便记录值并打印正确的异常。

为了在 Jenkins 管道 CPS 中获得类似的行为,人们要么需要重构 groovy 代码库和 Jenkins CPS 代码,要么复制上面链接的 AssertionWriter 类中的大量功能。

关于jenkins - 为什么 Groovy 的 powerassert 在 Jenkins 工作中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51497149/

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