A GitHub action that publishes your code coverage to Code Climate.
Note
Please use a specific version of this action – for example,
v4.0.0, instead of using only major versions likev4orv4.0– these will not work!
Warning
Please upgrade to v3.1.1 (or higher) immediately. v3.1.0 was recently broken inadverdently, and the only fix is to upgrade your action to v3.1.1 or higher. Please see #626 for more details.
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 |
steps:
- name: Test & publish code coverage
uses: paambaati/codeclimate-action@v4.0.0
env:
CC_TEST_REPORTER_ID: <code_climate_reporter_id>
with:
coverageCommand: npm run coverage
debug: trueWhen 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/codeclimate-action@v4.0.0
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/codeclimate-action@v4.0.0
env:
CC_TEST_REPORTER_ID: <code_climate_reporter_id>
with:
coverageCommand: yarn run coverage
coverageLocations: |
${{github.workspace}}/*.lcov:lcovsteps:
- name: Test & publish code coverage
uses: paambaati/codeclimate-action@v4.0.0
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:jacocoLet'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/codeclimate-action@v4.0.0
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:lcovExample projects