Jenkins文本查找插件,我该如何在Jenkinsfile中使用这个插件?

5
我想使用Text Finder插件编写Jenkinsfile,但我不确定它的工作原理。
这是我的代码:
pipeline {
    agent {
        label {
            label "master"
        }            
    }
    stages {
        stage('CHECKOUT') {
            steps{
                script{
                    echo "##[1 / 4] ERROR"
                }
                publishers {
                    textFinder("*ERROR*", '', true, false, true)
                }
            }
        }
    }
}
3个回答

4
如@mghicks所述,不是每个插件都支持Jenkins流水线。在这种情况下,“Text Finder”插件不支持它。 你可以为此编写自己的Groovy函数:
例如:
pipeline {
    agent {
        label {
            label "master"
        }            
    }

    stages {
        stage ('Check logs') {
            steps {
                filterLogs ('ERROR', 2)
            }
        }
    }
}

我们正在调用一个名为filterLogs的函数,并提供参数“ERROR”(在日志中搜索单词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'
    }
}

如果您没有使用共享库等内容,也可以将该函数直接实现在管道中。

TextFinder现在支持管道:https://issues.jenkins-ci.org/browse/JENKINS-34983 - YaP
这对于Jenkins管道并不是很相关。下面提到的是正确的。这个解决方案需要你深入了解Java,这对于那些运行其他语言和部署的人来说是一个恶魔步骤。 - Cyberience
现在确实有一个更好的解决方案。但是两年前还不存在这个解决方案。为您的流水线编写Groovy脚本没有任何缺点,也与您正在构建/部署的语言无关。Jenkins支持共享库设置,您可以编写可重用的.groovy脚本,以便在一个地方管理魔法并在多个流水线中重复使用:https://jenkins.io/doc/book/pipeline/shared-libraries/ - lvthillo

3
pipeline {
    agent {
        label {
            label "master"
        }            
    }
    stages {
        stage('CHECKOUT') {
            steps{
                script{
                    echo "##[1 / 4] ERROR"
                }
                publishers {
                    findText regexp: failure, alsoCheckConsoleOutput: true notBuiltIfFound: true
                }
            }
        }
    }
}

0

一个相当奇怪的链接需要解决。它说“不行,你不能这样做”。 - Andrey Regentov
@AndreyRegentov 我同意。我想知道是否有人能够查看该问题的历史记录 - 它以前是否有其他答案?我认为我不会将其链接到今天的样子。 - mghicks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接