我有一个groovy脚本来在Jenkins中设置一个预定的作业。
我想在失败的构建上执行一些shell脚本。
如果在作业被groovy脚本更新后,在创建作业之后手动使用脚本,它们就会运行。
但是groovy脚本没有添加它:
job('TestingAnalysis') {
triggers {
cron('H 8 28 * *')
}
steps {
shell('some jiberish to create error')
}
publishers {
postBuildScripts {
steps {
shell('echo "fff"')
shell('echo "FFDFDF"')
}
onlyIfBuildSucceeds(false)
onlyIfBuildFails(true)
}
retryBuild {
rerunIfUnstable()
retryLimit(3)
fixedDelay(600)
}
}
}每件事都很好,除了:
postBuildScripts {
steps {
shell('echo "fff"')
shell('echo "FFDFDF"')
}
onlyIfBuildSucceeds(false)
onlyIfBuildFails(true)
}这是我的结果:

我尝试了postBuildSteps,但也遇到了错误。
我也尝试了错误:
postBuildScripts {
steps {
sh' echo "ggg" '
}
onlyIfBuildSucceeds(false)
onlyIfBuildFails(true)
}发布于 2021-07-28 12:27:22
看看詹金斯-66189,似乎PostBuildScript的3.0版本出现了一个问题,即不再支持旧的语法(您正在使用的语法)。为了在Job脚本中使用新版本,您需要使用动态DSL语法。
在您自己的Jenkins实例中使用以下链接查看正确的用法:
YOUR_JENKINS_URL/plugin/job-dsl/api-viewer/index.html#path/freeStyleJob-publishers-postBuildScript.
它将帮助您构建正确的命令。就你而言,情况将是:
job('TestingAnalysis') {
triggers {
cron('H 8 28 * *')
}
steps {
shell('some jiberish to create error')
}
publishers {
postBuildScript {
buildSteps {
postBuildStep {
stopOnFailure(false) // Mandatory setting
results(['FAILURE']) // Replaces onlyIfBuildFails(true)
buildSteps {
shell {
command('echo "fff"')
}
shell {
command('echo "FFDFDF"')
}
}
}
}
markBuildUnstable(false) // Mandatory setting
}
}
}注意,您现在没有使用像onlyIfBuildSucceeds和onlyIfBuildFails这样的函数,而是将相关构建结果的列表传递给results函数。(成功,不稳定,失败,NOT_BUILT,中止)
https://stackoverflow.com/questions/68551832
复制相似问题