发布测试结果
您可以使用 Jenkins 将项目与 IBM Cloud® DevOps Insights 相集成,以发布测试记录。 测试结果会通知 DevOps Insights 有关构建过程中运行的测试的信息。 这些测试必须生成某种类型的基于 JSON 或 XML 的文件。
生成的测试文件将作为测试记录发布。 除了测试文件,此记录还包含应用程序名称、构建号、测试类型以及其他字段。 测试记录中的应用程序名称和构建标识必须与特定构建的构建记录中使用的名称和构建标识相匹配。 在管道中运行测试后,您可以将结果上传到 DevOps Insights。
准备工作
在发布测试结果之前,必须先发布构建记录。 有关更多信息,请参阅使用 Jenkins 发布构建记录。
发布测试结果
下面是可以使用的测试类型以及支持的格式。
Type | 格式 |
---|---|
单元测试 | JUnit (JSON)、xUnit (xml)、Mocha (JSON)、KarmaMocha (JSON) |
功能测试 | JUnit (JSON)、xUnit (xml)、Mocha (JSON)、KarmaMocha (JSON) |
代码覆盖 | Cobertura (xml), lcov,JaCoCo(xml) |
Sonarqube | Sonarqube |
静态安全扫描 | IBM Application Security on Cloud (xml) |
动态安全扫描 | IBM Application Security on Cloud (xml) |
IBM Vulnerability Advisor | IBM Vulnerability Advisor (JSON) |
定制数据集 - 测试 | JUnit (JSON)、xUnit (xml)、Mocha (JSON)、KarmaMocha (JSON) |
定制数据集 - 代码覆盖 | Cobertura (xml), lcov,JaCoCo(xml) |
使用 publishTestResult 步骤发布构建记录。 此步骤需要两个参数。 此外,它还可接受一个可选参数。
参数 | 定义 |
---|---|
type |
测试结果的类型。 |
fileLocation |
测试结果文件的位置。 |
environment |
仅当对测试运行执行功能验证测试 (fvt) 时,才需要环境。 |
buildNumber |
可选:将值设置为任何字符串以表示版本号。 |
applicationName |
可选:设置应用程序名称。 如果设置了此值,那么会忽略环境变量 IBM_CLOUD_DEVOPS_APP_NAME 。 |
下面是用于查看特定测试的测试结果的命令。
测试结果 | 测试类型 |
---|---|
unittest |
单元测试 |
fvt |
功能验证测试 |
code |
代码覆盖测试 |
staticsecurityscan |
静态安全扫描结果 |
dynamicsecurityscan |
动态安全扫描 |
以下示例命令包含多个参数。 第一个命令发布 Mocha 单元测试结果,第二个命令发布代码覆盖测试结果。
publishTestResults type:'unittest', fileLocation: './mochatest.json'
publishTestResults type:'code', fileLocation: './tests/coverage/reports/coverage-summary.json'
publishTestResults type:'fvt', fileLocation: './mochafvt.json', environment: 'STAGING'
publishTestResults type:'staticsecurityscan', fileLocation: './static-result.xml'
publishTestResults type:'dynamicsecurityscan', fileLocation: './dynamic-result.xml'
publishTestResults type:'vulnerabilityadvisor', fileLocation: './vulnerability-advisor.json'
对于每个命令,需要指定工具链标识才能导出环境变量。 有关更多信息,请参阅环境变量和定义。
发布 SonarQube 结果(可选)
按照 SonarQube文档中的说明配置SonarQube扫描仪和服务器后,即可将扫描结果发布到DevOps Insights 中。
要配置 Jenkins Pipeline 以接受这些结果,请向其添加以下参数:
参数 | 定义 |
---|---|
SQHostURL |
来自 SonarQube 服务器的 SonarQube 扫描程序 URL 的 host 部分。 |
SQAuthToken |
来自 SonarQube 服务器的 SonarQube API 认证令牌。 |
SQProjectKey |
要扫描的 SonarQube 项目的项目键。 |
buildNumber |
可选:将值设置为表示版本号的任何字符串。 |
applicationName |
可选:设置应用程序名称。 如果设置了此值,那么会忽略环境变量 IBM_CLOUD_DEVOPS_APP_NAME 。 |
下面是样本阶段中使用的 SonarQube 参数:
stage ('SonarQube analysis') {
steps {
script {
def scannerHome = tool 'Default SQ Scanner';
withSonarQubeEnv('Default SQ Server') {
env.SQ_Host)URL = SONAR_HOST_URL;
env.SQ_AUTHENTICATION_TOKEN = SONAR_AUTH_TOKEN;
env.SQ_PROJECT_KEY = "My Project Key";
run SonarQube scan...
}
}
}
}
stage ("SonarQube Quality Gate") {
steps {
...
}
post {
always {
publishSQResults SQHostURL: "${SQ_HOST_URL}", SQAuthToken: "${SQ_AUTHENTICATION_TOKEN}", SQProjectKey:"${SQ_PROJECT_KEY}"
}
}
}
查看测试结果
当管道运行时,它会向 DevOps Insights 发布测试结果数据。 要查看测试结果数据,请转至“质量仪表板”页面。 有关更多信息,请参阅 DevOps 数据聚集。
后续步骤
使用 Jenkins 评估检测点。