Release Notes for Codecov v4.5.0

📘

The 4.5.0 Changelog is Intended Primarily for Enterprise users

If you are a codecov.io user, you are taking advantage of many of the below changes already, as these updates have trickled out to production over the past several months. Therefore, this changelog is meant to serve as a comprehensive collection of changes between 4.4.13 as it pertains to enterprise users.

v4.5.0 Changelog

This release marks the move from Codecov Enterprise v4.4.x to v4.5, and marks a significant change in Codecov Enterprise and how it is delivered. \As many/all of these changes are in production at codecov.io already, this particular changelog is catered entirely toward the changes from 4.4.13 to 4.5.0 that will be experienced by enterprise users.

For more information on what is required to migrate from earlier versions, please see the Migration Considerations section below.

You can also read more about Codecov 4.5.0, why we chose to undertake a refactor, and our approach to the process on our blog.

New

  • Carryforward Flags are now fully supported, please see the documentation on Carryforward Flags, here: https://docs.codecov.io/docs/carryforward-flags
  • Completely overhauled logging on the worker. Worker logs are now much easier to parse and provide much clearer error messaging in the event of errors; making it much easier to self-diagnose problems and for Codecov to provide support.
  • Vastly enhanced metric reporting. Additional metrics are now available for users leveraging our statsd integration. We are still compiling the full list metrics and they will be provided in our support documentation in the near future.
  • Improved performance of the worker. We are still running our own benchmarks but have a meaningful reduction in resource consumption on production when comparing the old and new worker.
  • Enhanced our use of caching in the worker, such that commonly used -- but commonly immutable -- commit information is cached appropriately.
  • Generally improved exception catching and handling, leading to more graceful error handling and better exit strategies for when operations fail.

Fixes

  • Much better handling and validation of the Codecov yaml.
  • The unintutive bot fallback behavior seen in 4.4.x versions of Codecov has been removed in most instances, opting for more useful error messages instead. In the cases where fallbacks happen, the logs make it much more clear why.
  • Numerous issues related to improper caching behavior (e.g., team bot caching, repo yaml caching, etc) are now corrected.
  • Much better support for repositories that upload a large number of files per commit.
  • Worker makes much more performant use of underlying file storage mechanisms.
  • Improved handling of timeout behavior on notification tasks, leading to fewer occurrences of Codecov timing out during notification while waiting for CI to complete.
  • Fixes an issue where commits merged via a squashing strategy would become associated with the wrong branch.

Minor

  • The codecov.yml file is now automatically detected in the /dev folder, and the /.github folder if those folders exist. This is in addition to automatically detecting the codecov.yml if placed in the project root.
  • Small changes to how the Codecov Comment is rendered to remove small inconsistencies, such as displaying an Up arrow for a file's changed coverage when there was no change in coverage.
  • Incorporation of new storage backends, such that cloud based deployments in GCP or AWS can leverage native SDKs for GCS and S3 respectively. Minio is still the default, and should be used for all known current uses cases. This change is primarily for futureproofing, such that cloud storage specific solutions can be leveraged in future versions of Codecov if necessary.

Migration Considerations

First and foremost, Codecov Enterprise has now been split into two images, enterprise-web and enterprise-worker. This split was necessary in order to facilitate the level of refactor we desired to do on the enterprise worker. The best reference for the change is our codecov/enterprise repository, which demonstrates how to orchestrate the new web and worker images: https://github.com/codecov/enterprise/blob/v4.5/compose-assets/docker-compose.yml

If you have a more advanced deployment, such as one leveraging Kubernetes, your migration path should be similar: make any analogous edits to your web and worker deployments, and pull the new images. However, if any questions or concerns arise, do not hesitate to reach out to Codecov support.

Generally, all Codecov Enterprise versions after 4.4.0 should be able to migrate to 4.5.0 by simply pulling the updated images. Note that if your Codecov Enterprise version is before 4.4.8, special considerations may need to be taken to change how your installation interacts with storage. See: https://docs.codecov.io/changelog/release-notes-for-codecov-v448

If you are using Codecov 4.3.10 or lower, however, a lenghtier migration process is needed in order to ensure your data is properly retained. It is recommended, in this case, to reach out to Codecov support to discuss migration options.

The release of Codecov Enterprise 4.5.0 officially deprecates versions 4.3.10 and 4.3.9 of Codecov Enterprise. If you're using these versions of Codecov Enterprise it is highly encouraged that you reach out to Codecov support to discuss a migration.

Codecov will provide security level patches and fixes to the latest released 4.4.x version -- 4.4.13 -- of Codecov Enterprise until Nov 4, 2020. At that point, Codecov Enterprise 4.4.x will be fully deprecated, and users will be encouraged to upgrade to the latest version of Codecov Enterprise 4.5.x.