我正在尝试使用Text Finder plugin编写jenkins文件,但我不确切知道它是如何工作的。
这是我的代码:
pipeline {
agent {
label {
label "master"
}
}
stages {
stage('CHECKOUT') {
steps{
script{
echo "##[1 / 4] ERROR"
}
publishers {
textFinder("*ERROR*", '', true, false, true)
}
}
}
}
}
答案 0 :(得分:2)
正如@mghicks已经提到的那样,并非每个插件都支持Jenkins管道。在这种情况下,Text Finder插件不支持它。 例如,您可以为它编写自己的groovy函数:
例如:
pipeline {
agent {
label {
label "master"
}
}
stages {
stage ('Check logs') {
steps {
filterLogs ('ERROR', 2)
}
}
}
}
我们正在调用函数filterLogs,我们提供参数' ERROR' (在日志中搜索ERROR一词),我们定义“错误”字样的出现。 (当ERROR这个词有2次,比使工作不稳定时):
我们的filterLogs函数如下所示:
#!/usr/bin/env groovy
import org.apache.commons.lang.StringUtils
def call(String filter_string, int occurrence) {
def logs = currentBuild.rawBuild.getLog(10000).join('\n')
int count = StringUtils.countMatches(logs, filter_string);
if (count > occurrence -1) {
currentBuild.result='UNSTABLE'
}
}
如果您没有使用共享库或其他东西,您也可以在管道内部实现该功能。
答案 1 :(得分:1)
pipeline {
agent {
label {
label "master"
}
}
stages {
stage('CHECKOUT') {
steps{
script{
echo "##[1 / 4] ERROR"
}
publishers {
findText regexp: failure, alsoCheckConsoleOutput: true notBuiltIfFound: true
}
}
}
}
}
答案 2 :(得分:0)
Plugins need to enable pipeline support - 它不是自动的。鉴于Text Finder插件自2014年1月以来未经过更新,我在pipeline steps列表中看不到它,这可能是不可能的。有关可能的解决方法,请参阅How to use Jenkins plugins with no pipeline support?