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>. See examples below. | |
prefix | undefined | See --prefix |
steps:
- name: Test & publish code coverageuses: paambaati/codeclimate-action@v2.7.5env:
CC_TEST_REPORTER_ID: <code_climate_reporter_id>with:
coverageCommand: npm run coveragedebug: 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 coverageuses: paambaati/codeclimate-action@v2.7.5env:
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 coverageuses: paambaati/codeclimate-action@v2.7.5env:
CC_TEST_REPORTER_ID: <code_climate_reporter_id>with:
coverageCommand: yarn run coveragecoverageLocations: | ${{github.workspace}}/*.lcov:lcovsteps:
- name: Test & publish code coverageuses: paambaati/codeclimate-action@v2.7.5env:
# Set CC_TEST_REPORTER_ID as secret of your repoCC_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 itcoverageCommand: mvn testcoverageLocations: ${{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.jsmodule.exports={
...
coverageReporters: [['lcov',{projectRoot: '..'}]]...};steps:
- name: Test & publish code coverageuses: paambaati/codeclimate-action@v2.7.5env:
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}with:
coverageCommand: yarn run coveragecoverageLocations: | ${{github.workspace}}/client/coverage/lcov.info:lcov ${{github.workspace}}/server/coverage/lcov.info:lcovExample projects