コードカバレッジ
ビルド完了後、コードカバレッジ率が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クラスタ管理者に確認してください。