ポスト ジョブ スクリプトで Jenkins で実行された (または合格した) テストの数を取得する方法はありますか (たとえば、この数を Github Status API に送信する)。
2 に答える
Publish JUnit test result report
これらの数値にJenkins プラグインから直接アクセスする方法は見当たりませんでした。
ただし、JUnit XML を正常に解析した後、Jenkins REST API から取得した xml または json をいつでも使用/解析できます。
http://<jenkinsHost>/job/<YourJobName>/<JobID>/testReport/api/json?pretty=true
また
より一般的にするには:
http://<jenkinsHost>/job/<YourJobName>/lastSuccessfulBuild/testReport/api/json?pretty=true
JSON 出力の場合:
{
"duration" : 6109.1104,
"failCount" : 0,
"passCount" : 4389,
"skipCount" : 0,
"suites" : [
{
"cases" : [
{
...
}
],
"duration" : 0.012,
"id" : null,
"name" : "EventTest",
"stderr" : null,
"stdout" : null,
"timestamp" : null
}
]
}
http://<jenkinsInstanceHost>/job/<YourJobName>/<JobID>/testReport/api/xml
XML 出力の場合:
<testResult>
<duration>6109.1104</duration>
<failCount>0</failCount>
<passCount>4389</passCount>
<skipCount>0</skipCount>
<suite>
<case>
<age>0</age>
<className>
...
</className>
<duration>0.012</duration>
<failedSince>0</failedSince>
<name>Loop</name>
<skipped>false</skipped>
<status>PASSED</status>
</case>
<duration>0.012</duration>
<name>EventTest</name>
</suite>
</testResult>
テストの実行後に生成された xml の非常に単純な解析を行う単純な bash スクリプトを作成するだけになりました。これをリモートで行う必要がある場合、他の回答が示唆するように API を使用することはクールなアイデアです。私の場合、これはスクリプトです:
total_tests=$(cat test-reports/*.xml | grep "<testsuite" | tr -s " " | cut -d " " -f6 | cut -d "=" -f2 | sed 's/\"//g' | paste -sd+ - | bc)