由于text finder plugin不支持管道,我们不会看到另一个解决方案,然后编写一些groovy函数,它将捕获我们的Jenkins输出日志并搜索将作为参数的字符串。
我们使用声明性管道并使用托管共享库,以便我们可以重用该函数。
如果匹配,我们希望构建不稳定。
这就是我们现在拥有的(这个脚本在我们的管道中使用job_name(test)和一个字符串调用)。
#!/usr/bin/env groovy
def call(String jobname, String build_string) {
echo "Hello, ${jobname}."
def job = Jenkins.instance.items.find { it.name == jobname }
for (build in job.builds) {
def log = build.log
if (log.contains(build_string)) {
println "${job.name}: ${build.id}"
}
}
}
It fails at:
Hello, test.
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: builds for class: java.lang.Boolean
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
我们做错了什么?