1

记录测试结果和工件

虽然测试是良好的持续交付管道的关键部分,但大多数人不希望筛选数千行控制台输出来查找有关失败测试的信息,为了使这更容易,Jenkins可以记录和汇总测试结果,只要你的测试运行器可以输出测试结果文件。Jenkins通常与junit步骤捆绑在一起,但如果你的测试运行器无法输出JUnit样式的XML报告,则还有其他插件可以处理几乎任何广泛使用的测试报告格式。

要收集我们的测试结果和工件,我们将使用post部分。

Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any
    stages {
        stage('Test') {
            steps {
                sh './gradlew check'
            }
        }
    }
    post {
        always {
            junit 'build/reports/**/*.xml'
        }
    }
}

脚本管道(高级):

Jenkinsfile (Scripted Pipeline)
node {
    try {
        stage('Test') {
            sh './gradlew check'
        }
    } finally {
        junit 'build/reports/**/*.xml'
    }
}

这将始终抓取测试结果,让Jenkins跟踪它们,计算趋势并报告它们,具有失败测试的管道将标记为“不稳定”,在Web UI中用黄色表示,这与“失败”状态不同,用红色表示。

当存在测试失败时,从Jenkins获取构建的工件以进行本地分析和调查通常很有用,Jenkins对存储“工件”的内置支持使这变得切实可行,在执行管道期间生成的文件。

这可以通过archiveArtifacts步骤和文件通配符表达式轻松完成,如下例所示:

enkinsfile (Declarative Pipeline)
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh './gradlew build'
            }
        }
        stage('Test') {
            steps {
                sh './gradlew check'
            }
        }
    }

    post {
        always {
            archiveArtifacts artifacts: 'build/libs/**/*.jar', fingerprint: true
            junit 'build/reports/**/*.xml'
        }
    }
}

脚本管道(高级):

Jenkinsfile (Scripted Pipeline)
node {
    try {
        stage('Test') {
            sh './gradlew check'
        }
    } finally {
        archiveArtifacts artifacts: 'build/libs/**/*.jar', fingerprint: true
        junit 'build/reports/**/*.xml'
    }
}

如果在archiveArtifacts步骤中指定了多个参数,则必须在步骤代码中明确指定每个参数的名称 — 即artifacts用于工件的路径和文件名和fingerprint来选择此选项,如果你只需要指定工件的路径和文件名,那么你可以省略参数名称artifacts — 例如archiveArtifacts 'build/libs/**/*.jar'

在Jenkins中记录测试和工件对于快速轻松地向团队的各个成员呈现信息非常有用,在下一节中,我们将讨论如何告诉团队成员我们的管道中发生了什么。


上一篇:使用环境变量
下一篇:清理和通知

博弈
2.5k 声望1.5k 粉丝

态度决定一切