CodeAnt AI Coverage Upload Action
Upload test coverage reports to CodeAnt AI for comprehensive analysis, visualization, and tracking of your code coverage metrics. You can find this action on the GitHub Marketplace.Features
- 📊 Upload coverage reports in XML format (Cobertura XML, JaCoCo XML)
- 🔍 Automatic coverage analysis and insights
- 📈 Track coverage trends over time
- 🎯 Integration with pull requests
- 🚀 Easy setup with minimal configuration
Usage
Basic Example
Advanced Example
Inputs
| Input | Description | Required | Default |
|---|---|---|---|
access_token | CodeAnt API token (cdt_…) used to authenticate the upload — see API Tokens | Yes | - |
coverage_file | Path to the coverage XML file (e.g., coverage.xml) | Yes | coverage.xml |
api_base | CodeAnt AI API base URL | No | https://api.codeant.ai |
platform | Git platform (github, gitlab, bitbucket) | No | github |
base_url | Base URL of the git platform | No | https://github.com |
module | Module name for monorepo setups | No | - |
module_path | Module path for resolving files in monorepo | No | - |
Multiple Coverage Files (Monorepo)
When a single commit produces several coverage reports — for example one per service in a monorepo — give each upload its ownmodule and module_path. CodeAnt AI keeps the reports separate so each module is tracked, displayed, and gated independently. Without module, every upload writes to the same key and later steps overwrite earlier ones.
moduleis the logical name shown in the UI (e.g.backend,frontend).module_pathis the directory used to resolve source files referenced in the coverage XML (e.g.services/backend). If your XML’sfilenameattributes are relative to the module root, setmodule_pathto that root.
Recommended: a single job with strategy.matrix
Instead of duplicating the upload step per module, define it once and fan it out with strategy.matrix. Each matrix entry becomes its own parallel job; adding a new module is one new entry instead of an entire job stanza.
coverage (backend), coverage (frontend), etc. — and each runs the upload independently with its own module, module_path, and coverage_file.
Alternative: one step per module
If you prefer the explicit form (e.g. each module has a different test command that can’t be parameterized cleanly), call the action once per module:Supported Coverage Formats
Important: Only XML format is supported for coverage reports.
- Cobertura XML (.xml)
- JaCoCo XML
Setup
1. Create a CodeAnt Token
In CodeAnt AI, go to Settings → API tokens, click Create token, and copy the generated token (it starts withcdt_ and is shown only once). See API Tokens for the full walkthrough. This single token authenticates the upload — you don’t need a GitHub personal access token.
2. Generate Coverage Report
First, ensure your test suite generates a coverage report. Here are examples for common languages: Python (pytest)3. Add Secrets
Store your CodeAnt token as a repository secret:- Go to your repository Settings
- Navigate to Secrets and variables → Actions
- Click “New repository secret”
- Name:
CODEANT_TOKEN - Value: Your CodeAnt token (
cdt_…)
4. Configure Workflow
Add the action to your GitHub Actions workflow as shown in the usage examples above.Coverage config file
You have to create a .coveragerc file in the project’s root folder to include all the source files in the test coverage calculation. Example:How it works
With the above configuration:- coverage run -m pytest tests/ will count every .py under the workspace as “valid” lines except for those in the omitted directories.
- Lines actually executed by your tests are marked “covered.”
- coverage xml -o coverage.xml produces a Cobertura-style report reflecting true coverage over the entire codebase.
- Using this coverage xml, we calculate the coverage percentage and the status check will be done on every new push to the branch.