コードカバレッジ
ビルド完了後、コードカバレッジ率がUI上に表示されるようになり、コードカバレッジデータがアップロードされます。

現在、カバレッジ bookend では SonarQube をサポートしています。どのカバレッジプラグインがサポートされているかは Screwdriver クラスタ管理者に確認してください。
SonarQube
Sonar properties を sonar-project.properties ファイルや、screwdriver.yaml 内に $SD_SONAR_OPTS の環境変数として設定することができます。sonar.sources のプロパティは必須で、ソースのパスを指定します。
sonar-project.properties
SonarQube を使用するために、sonar-project.properties ファイルをソースコードのルートに追加して、そこに設定を追加していきます。
以下は Javascript example の sonar-project.properties の例です:
sonar.sources=index.js
sonar.javascript.lcov.reportPaths=artifacts/coverage/lcov.info
reportPath プロパティは使用する言語によって変わります。正しい指定の仕方は SonarQube documentation を確認してください。
$SD_SONAR_OPTS
設定を $SD_SONAR_OPTS の環境変数で指定することも出来ます。
screwdriver.yaml の例:
shared:
environment:
SD_SONAR_OPTS: '-Dsonar.sources=lib -Dsonar.javascript.lcov.reportPaths=artifacts/coverage/lcov.info'
jobs:
main:
requires: [~pr, ~commit]
image: node:lts
steps:
- install: npm install
- test: npm test
注意
sonar-project.propertiesと$SD_SONAR_OPTSで同じプロパティを設定していた場合、$SD_SONAR_OPTSの設定が優先されます。- Screwdriver は次のプロパティ(
sonar.host.url,sonar.login,sonar.projectKey,sonar.projectName,sonar.projectVersion,sonar.links.scm,sonar.links.ci)を自動で設定します。sonar.sourcesは自分で設定する必要があります。 - プライベートパイプラインではデフォルトでカバレッジが送信されません。送信したい場合は、
SD_ALLOW_PRIVATE_COVERAGE_SENDをtrueに設定してください。
セルフホスト型のSonarQubeを利用する
環境変数 $SD_SELF_SONAR_HOST に Sonar ホストの URL を設定することで、Screwdriver クラスタに設定されているものではないホストにコードカバレッジをアップロードすることができます。
$SD_SELF_SONAR_HOST を使用する場合、そのホストの admin の User Token を環境変数 $SD_SELF_SONAR_ADMIN_TOKEN に設定する必要があります。
screwdriver.yaml の例:
jobs:
main:
requires: [~pr, ~commit]
image: node:lts
steps:
- install: npm install
- test: npm test
environment:
SD_SELF_SONAR_HOST: 'http://YOUR_SONAR_URL'
secrets:
- SD_SELF_SONAR_ADMIN_TOKEN
注意
SD_SELF_SONAR_HOSTにコードカバレッジをアップロードした場合、UI上でのコードカバレッジ率の表示はN/Aとなります。
関連リンク
- SonarQube properties
- Java example
- Javascript example
- Examples from the SonarQube website
- SonarQube docs
- SonarQube environment variables
GitHub pull request decoration
ScrewdriverのクラスタがSonar Enterpriseを利用している場合、GitHubでのチェックにPull Request decorationを利用することができます。この機能が有効な場合、リポジトリにSonar PR Checks用のGitHub appを追加することで利用することが出来ます。サポート状況の詳細はScrewdriverクラスタ管理者に確認してください。