Overview
Upload test coverage reports to CodeAnt AI for comprehensive analysis, visualization, and tracking of your code coverage metrics. Reference Repository: codeant-coverageFeatures
- 📊 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
- 🏢 Support for self-hosted/enterprise instances
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 Bitbucket access token or app password.
2. Configure Repository Variables
Before using the pipe, configure this repository variable in Repository Settings → Pipelines → Repository variables:CODEANT_TOKEN- Your CodeAnt token (cdt_…)
Basic Usage
Example 1: Basic Coverage Upload
Example 2: Pull Request Coverage Analysis
Example 3: Advanced Configuration with Debug Mode
Configuration Variables
| Variable | Required | Default | Description |
|---|---|---|---|
CODEANT_TOKEN | Yes | - | CodeAnt API token (cdt_…) for authentication — see API Tokens (set as repository variable and pass as ACCESS_TOKEN: $CODEANT_TOKEN in pipeline) |
COVERAGE_FILE | Yes | coverage.xml | Path to the coverage XML file (e.g., coverage.xml) |
API_BASE_URL | No | https://api.codeant.ai | CodeAnt AI API base URL (for self-hosted instances) |
PLATFORM | No | bitbucket | Git platform (github, gitlab, bitbucket) |
FAIL_ON_ERROR | No | true | Fail the build if coverage upload fails |
DEBUG | No | false | Enable debug logging |
Supported Coverage Formats
Important: Only XML format is supported for coverage reports.
- Cobertura XML (
.xml) - JaCoCo XML
Language-Specific Examples
Python with pytest
JavaScript with Jest
Java with Maven
Go with go-cover
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: parallel steps
Bitbucket Pipelines doesn’t have a matrix directive, but parallel lets each module upload run concurrently in its own step. Adding a new module is one new step in the parallel block.
Alternative: sequential uploads in one step
If you’d rather upload every module inside a single step (e.g. to avoid extra step minutes), call the pipe multiple times in the samescript: block:
Coverage Configuration
Python Coverage Configuration
Create a.coveragerc file in your project’s root folder to include all source files in the test coverage calculation:
., it checks for every Python file in the root folder and its subdirectories. You can omit directories by placing them in the omit section.
How It Works
- The pipe fetches the latest coverage upload script from CodeAnt AI
- Automatically decodes and prepares the script for execution
- Uploads your coverage report along with commit and repository information
- CodeAnt AI processes the report and provides analysis on your pull requests
- Lines executed by your tests are marked as “covered”
- Coverage percentage is calculated and status checks are performed on every push
Troubleshooting
Enable Debug Mode
SetDEBUG: 'true' to see detailed logs:
Coverage File Not Found
Issue: Coverage file not found error Solution: Ensure the coverage file is generated before upload and verify theCOVERAGE_FILE path is correct. Use artifacts to pass files between steps if needed.
Upload Fails But Pipeline Continues
Issue: Upload fails but pipeline continues Solution: SetFAIL_ON_ERROR: 'false' to continue the pipeline even if upload fails (default is true).
Authentication Errors
Issue: Authentication errors during upload Solution: Verify yourCODEANT_TOKEN holds a valid CodeAnt token (cdt_…) that hasn’t been revoked, belongs to the same organization as the repository, and is marked as secured in Repository Variables. You can re-issue tokens under Settings → API tokens in CodeAnt AI — see API Tokens.
Low Coverage Reporting
Issue: Coverage reporting is lower than expected Solution: Check your coverage configuration file (e.g.,.coveragerc), ensure all source files are included, and verify omit patterns aren’t excluding too much code.
Support
- 📧 Email: support@codeant.ai
- 📚 Documentation: https://docs.codeant.ai
- 🐛 Repository: https://bitbucket.org/codeantworkspace/codeant-coverage/src/main/