/circleci-coverage-github-reporter

Report coverage statistics from CircleCI to GitHub

Primary LanguageJavaScript

circleci-coverage-github-reporter

npm version

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.

  1. Navigate to Personal access tokens on GitHub
  2. Click "Generate new token" and generate a new token (with repo access if your repo is private)
  3. Open the CircleCI project settings
  4. Navigate to Build Settings > Environment variables
  5. Add a new variable called GH_AUTH_TOKEN with the new token

For subsequent projects:

  1. Open the CircleCI project settings
  2. Navigate to Build Settings > Environment variables
  3. Click "Import Variable(s)"
  4. Select a project that you've previous added GH_AUTH_TOKEN to
  5. 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.

  1. Open the CircleCI project settings
  2. Navigate to Permissions > API Permissions
  3. Click "Create Token"
  • Select "Build Artifacts" from scope dropdown
  • Name the token "artifacts" (or whatever you prefer)
  1. Navigate to Build Settings > Environment variables
  2. 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 @vendii/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