Jenkins Text finder插件,如何在jenkinsfile中使用此插件?

时间:2018-01-25 19:39:04

标签: jenkins jenkins-pipeline

我正在尝试使用Text Finder plugin编写jenkins文件,但我不确切知道它是如何工作的。

这是我的代码:

pipeline {
    agent {
        label {
            label "master"
        }            
    }
    stages {
        stage('CHECKOUT') {
            steps{
                script{
                    echo "##[1 / 4] ERROR"
                }
                publishers {
                    textFinder("*ERROR*", '', true, false, true)
                }
            }
        }
    }
}

3 个答案:

答案 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?