maven - 获取 Jenkins 管道内 Maven 构建失败的原因

标签 maven jenkins jenkins-pipeline

我设置了一个 Jenkins 脚本管道,我在其中执行多个 Maven 构建。如果根本原因是已知的,我想将其中之一视为非致命的。

我试图通过检查异常的消息来实现这一点,例如

try {
    sh "mvn -U clean verify sonar:sonar ${sonarcloudParams}"
} catch ( Exception e ) {
    if ( e.getMessage().contains("not authorized to run analysis")) {
        echo "Marking build unstable due to missing SonarCloud onboarding. See https://cwiki.apache.org/confluence/display/SLING/SonarCloud+analysis for steps to fix."
        currentBuild.result = 'UNSTABLE'
    }
}

问题是异常消息不是来自 Maven 的消息,而是“脚本返回退出代码 1”。

e.getCause() 中没有更多信息。

如何在我的脚本管道中找到 Maven 构建失败的原因?

最佳答案

您可以获得命令输出,然后解析容器特定的消息。

def output = sh(
        script: "mvn -U clean verify sonar:sonar ${sonarcloudParams}",
        returnStdout: true
    ).trim()

echo "mvn cmd output: ${output}"

if(output.contains('not authorized to run analysis')) {
    currentBuild.result = 'UNSTABLE'
}


// parse jenkins job build log
def logUrl = env.BUILD_URL + 'consoleText'

def cmd = "curl -u \${JENKINS_AUTH} -k ${logUrl} | tail -n 50"

def output = sh(returnStdout: true, script: cmd).trim()

echo "job build log: ${output}"

if(output.contains('not authorized to run analysis')) {
    currentBuild.result = 'UNSTABLE'
}

关于maven - 获取 Jenkins 管道内 Maven 构建失败的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55742773/

相关文章:

java - 漏洞?无法加载配置中指定的记录器[akka.testkit.TestEventListener]?

maven - 即使添加依赖项后,Intellij IDEA jSTL 和 taglib 也无法识别

jenkins - 如何使用 Jenkins 创建工作层次结构?

amazon-web-services - 如何在此 Jenkinsfile 步骤中获取 AWS AccountID

amazon-web-services - 如何使用 Jenkinsfile 创建 EC2 实例

java - 强制重新加载 IntelliJ 中的环境变量...无需重新启动?

java - 是否可以在自定义的 Maven 原型(prototype)中提供动态目录结构

java - 如何将 NetBeans Java Web 应用程序项目的 jar 文件添加到 Ant,以便在 Jenkins 上构建它?

unit-testing - Xcode4 在终端中显示所有输出(删除 “Showing first 200 notices only” )

jenkins-pipeline - 我如何实现 git Additional Behaviors => Checkout 到 Jenkins 管道中的特定本地分支?