Awesome
⚠️ Deprecation Warning ⚠️
On February 1, 2022, this uploader will be fully sunset and no longer function
We recommend all users migrate to the uploader to prevent any breakages in usage. You can learn more about our deprecation plan and the new uploader on our blog.
Codecov Bash Uploader
Upload reports to Codecov for almost every supported language.
Running the bash uploader
# All CI
bash <(curl -s https://codecov.io/bash)
# Pipe to bash (Jenkins)
curl -s https://codecov.io/bash | bash -s - -t token
# ^ add your extra config here
# No bash method
curl -s https://codecov.io/bash > .codecov
chmod +x .codecov
./.codecov
⚠️ Verifying the bash uploader
As an additional layer of security, users may wish to check the script against the provided SHASUMs.
curl -fLso codecov https://codecov.io/bash;
VERSION=$(grep -o 'VERSION=\"[0-9\.]*\"' codecov | cut -d'"' -f2);
for i in 1 256 512
do
shasum -a $i -c --ignore-missing <(curl -s "https://raw.githubusercontent.com/codecov/codecov-bash/${VERSION}/SHA${i}SUM")
done
./codecov
or for older versions of shasum
curl -fLso codecov https://codecov.io/bash;
VERSION=$(grep -o 'VERSION=\"[0-9\.]*\"' codecov | cut -d'"' -f2);
for i in 1 256 512
do
shasum -a $i -c <(curl -s "https://raw.githubusercontent.com/codecov/codecov-bash/${VERSION}/SHA${i}SUM" | grep -w "codecov")
done
./codecov
Languages
Codecov supports many languages, you can find a full list here: https://docs.codecov.io/docs/supported-languages
Other Usage
Below are most commonly used settings. View full list of commands to see the full list of commands.
# public repo on Travis CI
after_success:
- bash <(curl -s https://codecov.io/bash)
# private repo
after_success:
- bash <(curl -s https://codecov.io/bash) -t your-repository-upload-token
# Flag build types
after_success:
- bash <(curl -s https://codecov.io/bash) -F unittests
# Include environment variables to store per build
after_success:
- bash <(curl -s https://codecov.io/bash) -e TOX_ENV,CUSTOM_VAR
When running the codecov-bash uploader on Alpine Linux, you are likely to run into a parsing issue because of the default shell. To be able to upload reports, you need to issue the following commands.
after_success:
- apk -U add git curl bash findutils
- bash -c '/bin/bash <(curl -s https://codecov.io/bash)'
Prevent build failures
If Codecov fails to upload reports, you can ensure the CI build does not fail by adding a catch-all:
bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"
CI Providers
Company | Supported | Token Required |
---|---|---|
Travis CI | Yes | Private only |
Azure Pipelines | Yes | Private only |
CircleCI | Yes | Private only |
Codeship | Yes | Public & Private |
Jenkins | Yes | Public & Private |
Semaphore | Yes | Public & Private |
TeamCity. | Yes | Public & Private |
drone.io | Yes | Public & Private |
AppVeyor | Yes | Private only |
Bamboo | Yes | Public & Private |
Bitbucket | Yes | Public & Private |
Bitrise | Yes | Public & Private |
buddybuild | Yes | Public & Private |
Buildkite | Yes | Public & Private |
Heroku | Yes | Public & Private |
Wercker | Yes | Public & Private |
Shippable | Yes | Public & Private |
Gitlab CI | Yes | Public & Private |
Buildkite | Yes | Public & Private |
GitHub Actions | Yes | Private only |
Cirrus CI | Yes | Public & Private |
AWS CodeBuild | Yes | Public & Private |
git | Yes (as a fallback) | Public & Private |
Caveats
- Jenkins: Unable to find reports? Try
PWD=WORKSPACE bash <(curl -s https://codecov.io/bash)
Development
To automatically update the hash files after a change to the Codecov uploader script, run
./install.sh
which will add the pre-commit
hooks. You can also update the hash files manually via:
for i in 1 256 512; do shasum -a "${i}" codecov > "SHA${i}SUM"; done
and add the change to your pull request.