circleci-coverage-github-reporter
Report Jest/Istanbul coverage statistics from CircleCI to GitHub.
Project based on coverage-github-reporter.
Setup
GitHub Auth Token
A GitHub auth token is required to post a comment on github. I recommend creating a separate "bot" GitHub account with access to your repos.
- Navigate to Personal access tokens on GitHub
- Click "Generate new token" and generate a new token (with repo access if your repo is private)
- Open the CircleCI project settings
- Navigate to Build Settings > Environment variables
- Add a new variable called
GH_AUTH_TOKEN
with the new token
For subsequent projects:
- Open the CircleCI project settings
- Navigate to Build Settings > Environment variables
- Click "Import Variable(s)"
- Select a project that you've previous added
GH_AUTH_TOKEN
to - Click the checkbox next to
GH_AUTH_TOKEN
and import
CircleCI Artifact API Token
To access artifacts for private repos, a CircleCI API token is required.
- Open the CircleCI project settings
- Navigate to Permissions > API Permissions
- Click "Create Token"
- Select "Build Artifacts" from scope dropdown
- Name the token "artifacts" (or whatever you prefer)
- Navigate to Build Settings > Environment variables
- Add a new variable called
CIRCLE_CI_API_TOKEN
with the new token
Run Jest with Coverage reporting
Add to your package.json
:
npm install --save-dev @godaddy-wordpress/circleci-coverage-github-reporter
If you're using Jest, I suggest adding a test script along these lines:
"scripts": {
"test-ci": "jest --ci --silent --coverage"
}
This will generate a coverage in coverage/
CircleCI configuration
Update your .circleci/config.yml
:
general:
artifacts:
- "coverage/lcov-report"
jobs:
build:
steps:
# … other steps (npm/yarn install, lint, etc)
- run:
name: Test
command: npm run test-ci
# Store coverage artifacts so they can be browsed and be diffed by other builds
- store_artifacts:
path: coverage
destination: coverage
- run:
name: Post coverage comment to GitHub
command: npx circleci-coverage-github-reporter
Customization
The circleci-coverage-github-reporter
CLI has some options to customize behavior:
Options:
-v, --verbose [true, false] Defaults to true
-b, --branch [value] Base branch to use if not PR (defaults to "master")
-j, --coverage-json [value] Relative path to istanbul coverage JSON (defaults to "coverage/coverage-final.json")
-r, --coverage-root [value] Relative path to coverage html root (for artifact links) (defaults to "coverage/lcov-report")
-h, --help Output usage information
-v, --version Output the version number