A GitHub action that publishes your code coverage to Code Climate.
This action requires that you set the CC_TEST_REPORTER_ID
environment variable. You can find it under Repo Settings in your Code Climate project.
Input | Default | Description |
---|---|---|
coverageCommand |
The actual command that should be executed to run your tests and capture coverage. | |
workingDirectory |
Specify a custom working directory where the coverage command should be executed. | |
debug |
false |
Enable Code Coverage debug output when set to true . |
coverageLocations |
Locations to find code coverage as a multiline string. Each line should be of the form <location>:<type> .type can be any one of clover, cobertura, coverage.py, excoveralls, gcov, gocov, jacoco, lcov, lcov-json, simplecov, xccov . See examples below. |
|
prefix |
undefined |
See --prefix |
verifyDownload |
true |
Verifies the downloaded Code Climate reporter binary's checksum and GPG signature. See Verifying binaries |
verifyEnvironment |
true |
Verifies the current runtime environment (operating system and CPU architecture) is supported by the Code Climate reporter. See list of supported platforms |
batchSize |
Batch size for source files (cc-test-reporter upload-coverage uses 500 by default) |
Note If you are a Ruby developer using SimpleCov, other users have recommended installing an additional gem –
gem "simplecov_json_formatter"
– this gem fixesjson
error from the defaultcoverage/.resultset.json
output from SimpleCov.
steps:
- name: Test & publish code coverage
uses: paambaati/[email protected]
env:
CC_TEST_REPORTER_ID: <code_climate_reporter_id>
with:
coverageCommand: npm run coverage
debug: true
When you've already generated the coverage report in a previous step and wish to just upload the coverage data to Code Climate, you can leave out the coverageCommand
option.
steps:
- name: Test & publish code coverage
uses: paambaati/[email protected]
env:
CC_TEST_REPORTER_ID: <code_climate_reporter_id>
This action supports basic glob patterns to search for files matching given patterns. It uses @actions/glob
to expand the glob patterns.
steps:
- name: Test & publish code coverage
uses: paambaati/[email protected]
env:
CC_TEST_REPORTER_ID: <code_climate_reporter_id>
with:
coverageCommand: yarn run coverage
coverageLocations: |
${{github.workspace}}/*.lcov:lcov
steps:
- name: Test & publish code coverage
uses: paambaati/[email protected]
env:
# Set CC_TEST_REPORTER_ID as secret of your repo
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
JACOCO_SOURCE_PATH: "${{github.workspace}}/src/main/java"
with:
# The report file must be there, otherwise Code Climate won't find it
coverageCommand: mvn test
coverageLocations: ${{github.workspace}}/target/site/jacoco/jacoco.xml:jacoco
Let's say you have a monorepo with two folders —client
and server
, both with their own coverage folders and a yarn coverage
script which runs Jest within both folders.
"scripts": {
"coverage": "yarn client coverage && yarn server coverage"
}
First be sure that paths in your coverage/lcov.info
are correct; they should be either absolute or relative to the root of the monorepo. Open lcov.info
and search for any path. For example —
SF:src/server.ts
If you find a relative path like this (happens for Jest 25+), it's incorrect as it is relative to the sub-package. This can be fixed by configuring Jest to set the root of your monorepo —
// server/jest.config.js
module.exports = {
...
coverageReporters: [['lcov', { projectRoot: '..' }]]
...
};
steps:
- name: Test & publish code coverage
uses: paambaati/[email protected]
env:
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
with:
coverageCommand: yarn run coverage
coverageLocations: |
${{github.workspace}}/client/coverage/lcov.info:lcov
${{github.workspace}}/server/coverage/lcov.info:lcov
Example projects