Generate coverage reports using ReportGenerator and a build status based on coverage requirements.
Add the following snippet to the script section of
your bitbucket-pipelines.yml
file:
script:
- pipe: docker://loremfoobar/reportgenerator-coverage-bitbucket-pipe:1.0.1
variables:
# BITBUCKET_USERNAME: "<string>" # Optional
# BITBUCKET_APP_PASSWORD: "<string>" # Optional
# LINE_COVERAGE_MINIMUM: "<int>" # Optional, default: 0
# BRANCH_COVERAGE_MINIMUM: "<int>" # Optional, default: 0
# PIPELINE_REPORT_TITLE: "<string>" # Optional, default: BUILD_STATUS_NAME if present, else "Code Coverage"
# BUILD_STATUS_NAME: "<string>" # Optional, default: PIPELINE_REPORT_TITLE if present, else "Code Coverage"
# CREATE_BUILD_STATUS: "<boolean>" # Optional, default: true
# FAIL_WHEN_MINIMUM_NOT_MET: "<boolean>" # Optional, default: false
# PUBLISHED_REPORT_URL: "<string>" # Optional
# REPORTS: "<string>" # Optional, default: "**/coverage*.xml"
# REPORT_TYPES: "<string>" # Optional, default: "JsonSummary;Html"
# EXTRA_ARGS: ['arg1', 'arg2'] # Optional
# DEBUG: "<boolean>" # Optional
Variable | Usage |
---|---|
BITBUCKET_USERNAME | Bitbucket username, required to create build status. Note, that this should be an account name, not the email. |
BITBUCKET_APP_PASSWORD | Bitbucket app password, required to create build status. |
PIPELINE_REPORT_TITLE | Title of Pipeline report created by pipe. Default: BUILD_STATUS_NAME if present, else "Code Coverage" . |
BUILD_STATUS_NAME | Name of build status created by pipe. Default: PIPELINE_REPORT_TITLE if present, else "Code Coverage" . |
CREATE_BUILD_STATUS | Whether to create build status reflecting the provided coverage requirements. Default: true . |
FAIL_WHEN_MINIMUM_NOT_MET | Whether to fail current build step when minimum coverage requirements are not met. Default: false |
REPORTS | Path(s) to coverage reports. Supports globbing. Passed as value of -reports argument to ReportGenerator . Default: **/coverage*.xml . |
REPORT_TYPES | The types of reports to generate. Passed as value of -reporttypes argument to ReportGenerator . Default: JsonSummary;Html . Note: JsonSummary is required to enforce minimum requirements. |
LINE_COVERAGE_MINIMUM | Minimum requirement for line coverage percentage. Default: 0 . |
BRANCH_COVERAGE_MINIMUM | Minimum requirement for branch coverage percentage. Default: 0 . |
PUBLISHED_REPORT_URL | If you intend to upload coverage report generated by this pipe, this should contain the URL to the published report. |
EXTRA_ARGS | Extra arguments array that are passed as is to ReportGenerator . |
DEBUG | Turn on extra debug information. Default: false . |
(*) = required variable.
Code coverage files need to be present when the pipe runs. Different coverage tools exist for different languages/technologies. Whichever tool you use to create the coverage data, it needs to be in one of the formats supported by ReportGenerator, see ReportGenerator Supported File Formats .
Build status will be created only if username and app password are provided. To have this pipe create build status, you need to generate an app password . Only the Repositories Read permission is required.
Report files are generated in folder ./coverage-report
. You can use another
pipe to upload the report files to your preferred storage provider. If you
provide the expected report URL in PUBLISHED_REPORT_URL
variable, it will be
used as the link for the build status and the Pipeline report for easy access.
Depending on your storage provider, you may need to link directly to the
index.html
file in order to be able browse to it.
Basic example using secure variables for username and app password:
script:
- pipe: docker://loremfoobar/reportgenerator-coverage-bitbucket-pipe:1.0.1
variables:
BITBUCKET_USERNAME: $USERNAME
BITBUCKET_APP_PASSWORD: $APP_PASSWORD
LINE_COVERAGE_MINIMUM: "80"
BRANCH_COVERAGE_MINIMUM: "80"
Example with published report URL:
script:
- pipe: docker://loremfoobar/reportgenerator-coverage-bitbucket-pipe:1.0.1
variables:
BITBUCKET_USERNAME: $USERNAME
BITBUCKET_APP_PASSWORD: $APP_PASSWORD
LINE_COVERAGE_MINIMUM: "80"
BRANCH_COVERAGE_MINIMUM: "80"
PUBLISHED_REPORT_URL: "https://my-server.com/coverage/$BITBUCKET_REPO_SLUG/$BITBUCKET_COMMIT/index.html"
Example with extra arguments:
script:
- pipe: docker://loremfoobar/reportgenerator-coverage-bitbucket-pipe:1.0.1
variables:
BITBUCKET_USERNAME: $USERNAME
BITBUCKET_APP_PASSWORD: $APP_PASSWORD
LINE_COVERAGE_MINIMUM: "80"
BRANCH_COVERAGE_MINIMUM: "80"
REPORTS: "coverage/cobertura.xml"
REPORT_TYPES: "JsonSummary;HtmlSummary"
EXTRA_ARGS: [ '-plugins:my-history-storage-plugin.dll', '"-classfilters:+IncludeThisClass;-ExcludeThisClass"' ]
PUBLISHED_REPORT_URL: "https://my-server.com/coverage/$BITBUCKET_REPO_SLUG/$BITBUCKET_COMMIT/summary.html"
Example with build status creation temporarily disabled:
script:
- pipe: docker://loremfoobar/reportgenerator-coverage-bitbucket-pipe:1.0.1
variables:
BITBUCKET_USERNAME: $USERNAME
BITBUCKET_APP_PASSWORD: $APP_PASSWORD
LINE_COVERAGE_MINIMUM: "80"
BRANCH_COVERAGE_MINIMUM: "80"
CREATE_BUILD_STATUS: "false"
If you're reporting an issue, please include:
- the version of the pipe
- relevant logs and error messages
- steps to reproduce