我在詹金斯管道减少了一些意外的行为(对我来说)常规以下内容:创建具有下列脚本代码詹金斯管道项目:意外的行为:没有。每次迭代
def a = ['a','b','c']
def ctx = [ alljobs: a ]
def say(s) {println "$s"}
@NonCPS
def fn(ctx) {
say "ctx.alljobs=$ctx.alljobs"
ctx.alljobs.each { j -> say "$j" }
say "done"
}
say "before fn()"
fn(ctx)
say "after fn()"
当我在詹金斯(少@NonCPS)之外的Groovy解释执行,我得到的输出I预期:
before fn()
ctx.alljobs=[a, b, c]
a
b
c
Done.
after fn()
当我运行詹金斯管道的工作,我看到以下内容:
Started by user John Elion (john.elion)
[Pipeline] echo
before fn()
[Pipeline] echo
ctx.alljobs=[a, b, c]
[Pipeline] echo
after fn()
[Pipeline] End of Pipeline
Finished: SUCCESS
的。每个没有在所有正在执行的(我也看到了它执行一次 - 这正是促使我尽量减少到一个简单的代码片段) - 后循环是说,并且该功能被抛弃不打印,但函数返回后的说法正在执行。
我曾尝试在try-catch代码包装各种块,看是否有异常发生,但没有运气。我错过了什么吗?期待我在詹金斯以外的常规翻译中看到的行为是否错误?
流水线错误?或者我错过了什么?
我执行的詹金斯v2.44。这是一个严密锁定的环境;我知道它在某种Linux上运行;我相信我有workflow-cps的Pipeline:Groovy'v2.26,我不确定哪个其他管道或其他插件是相关的。
谢谢。
之一的几种情况如果您的脚本中出现了错误,Jenkins不会提供足够的信息(或任何)。 –