テスト結果の公開
Jenkins を使用してテスト結果を公開することで、プロジェクトを IBM Cloud® DevOps Insights に統合することができます。 テスト結果は、ビルド・プロセスで実行されたテストについて DevOps Insights に通知します。 それらのテストでは、必ず何らかの JSON または XML ベースのファイルが生成されます。
生成されたテスト・ファイルが、テスト・レコードとして公開されます。 テスト・ファイルに加えて、このレコードには、アプリケーション名、ビルド番号、テストのタイプなどのフィールドが含まれます。 テスト・レコードのアプリケーション名およびビルド ID は、特定のビルドのビルド・レコードで使用されているアプリケーション名およびビルド ID と一致する必要があります。 パイプラインでテストを実行した後、DevOps Insights に結果をアップロードできます。
開始前に
テスト結果を公開する前に、ビルド・レコードを公開する必要があります。 詳しくは、Jenkins を使用したビルド・レコードの公開を参照してください。
テスト結果の公開
使用できるテストのタイプとサポートされているフォーマットは次のとおりです。
タイプ | 書式 |
---|---|
単体テスト | 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 脆弱性アドバイザー (JSON) |
カスタム・データ・セット - テスト | JUnit (JSON)、xUnit (xml)、Mocha (JSON)、KarmaMocha (JSON) |
カスタム・データ・セット - コード・カバレッジ | Cobertura(xml)、lcov、JaCoCo(xml) |
publishTestResult ステップでビルド・レコードを公開します。 このステップでは、2 つのパラメーターが必要です。 これには、1 つのオプション・パラメーターも指定できます。
パラメーター | 定義 |
---|---|
type |
テスト結果のタイプ。 |
fileLocation |
テスト結果ファイルの場所。 |
environment |
この環境は、テスト実行時の機能検証テスト (fvt) の場合にのみ必要です。 |
buildNumber |
オプション: バージョン番号を表す任意のストリングに値を設定します。 |
applicationName |
オプション: アプリケーション名を設定します。 この値が設定されている場合、環境変数 IBM_CLOUD_DEVOPS_APP_NAME は無視されます。 |
以下は、特定のテストのテスト結果を表示するために使用されるコマンドです。
テストの結果 | テスト・タイプ |
---|---|
unittest |
単体テスト |
fvt |
機能検証テスト |
code |
コード・カバレッジ・テスト |
staticsecurityscan |
静的セキュリティー・スキャンの結果 |
dynamicsecurityscan |
動的セキュリティー・スキャン |
以下のコマンド例にはパラメーターが含まれています。 最初のコマンドは Mocha 単体テスト結果を公開し、2 番目のコマンドではコード・カバレッジ・テスト結果を公開します。
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'
コマンドごとに、ツールチェーン ID を指定して環境変数をエクスポートする必要があります。 詳しくは、環境変数と定義を参照してください。
SonarQube 結果の公開 (オプション)
SonarQubeドキュメントの指示に従ってSonarQubeスキャナとサーバを設定すると、DevOps Insights にスキャン結果を公開できます。
これらの結果を受け入れるように Jenkins パイプラインを構成するには、以下のパラメーターを追加します。
パラメーター | 定義 |
---|---|
SQHostURL |
SonarQube サーバーからの SonarQube スキャナーの URL のホスト部分。 |
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 を使用してゲートを評価します。