Files
David Müller cb420d2d4d Align github and nuget release versions (#1416)
Align github and nuget release versions
2023-01-02 12:20:06 +01:00

6.9 KiB
Raw Permalink Blame History

Release Plan

Versioning strategy

Coverlet is versioned with Semantic Versioning 2.0.0 that states:

Given a version number MAJOR.MINOR.PATCH, increment the:

MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner, and
PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

We release 3 components as NuGet packages:

coverlet.msbuild.nupkg
coverlet.console.nupkg
coverlet.collector.nupkg

Current versions

Package Version
coverlet.msbuild 3.2.0
coverlet.console 3.2.0
coverlet.collector 3.2.0
Release Date coverlet.msbuild coverlet.console coverlet.collector commit hash notes
29 Oct 2022 3.2.0 3.2.0 3.2.0 e2c9d84a84
06 Feb 2022 3.1.2 3.1.2 3.1.2 e335b1a802 Fix CoreLib coverage issues
30 Jan 2022 3.1.1 3.1.1 3.1.1 e4278c06fa
19 July 2021 3.1.0 3.1.0 3.1.0 5a0ecc1e92 Support for determistic build
21 February 2021 3.0.3 3.0.3 3.0.3 adfabfd58d Fix regressions
24 January 2021 3.0.2 3.0.2 3.0.2 ed91851549 Fix regressions
16 January 2021 3.0.1 3.0.1 3.0.1 1b45fd8924 Fix severe coverage regression
09 January 2021 3.0.0 3.0.0 3.0.0 1e77f9d218 Align versions numbers
30 May 2020 2.9.0 1.7.2 1.3.0 83a38d45b3 deterministic build support
04 April 2020 2.8.1 1.7.1 1.2.1 3f81828821
03 January 2019 2.8.0 1.7.0 1.2.0 72a688f1c4
23 September 2019 2.7.0 1.6.0 1.1.0 4ca01eb239
01 July 2019 2.6.3 1.5.3 1.0.1 e159335949
06 June 2019 2.6.2 1.5.2 1.0.0 3e7eac9df0 first collector release

To get the list of commits between two version use git command

git log --oneline hashbefore currenthash

How to manually compare latest release with nightly build

Before creating a new release it makes sense to test the new release against a benchmark repository. This can help to determine bugs that haven't been found by the unit/integration tests. Therefore, coverage of the latest release is compared with our nightly build.

In the following example the benchmark repository refit (https://github.com/reactiveui/refit) is used which already uses coverlet for coverage.

  1. Clone the benchmark repository (https://github.com/reactiveui/refit)

  2. Check if latest coverlet version is used by the project, otherwise add coverlet to the project (https://github.com/coverlet-coverage/coverlet#installation).

  3. Create coverage report for latest coverlet version:

dotnet test --collect:"XPlat Code Coverage"
  1. Update the test projects with the latest nightly build version of coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/ConsumeNightlyBuild.md).

  2. Create coverage report for nightly build version by rerunning the tests:

dotnet test --collect:"XPlat Code Coverage"
  1. Check for differences in the coverage reports.

How to manually release packages to nuget.org

This is the steps to release new packages to nuget.org

  1. Update projects version in file version.json in root of repo (remove -preview.{height} and adjust version)

Do a PR and merge to master.

  1. Clone repo, remember to build packages from master and not from your fork or metadata links will point to your forked repo. . Run git log -5 from repo root to verify last commit.

  2. From new cloned, aligned and versions updated repo root run pack command

dotnet pack -c release /p:TF_BUILD=true /p:PublicRelease=true
...
coverlet.console -> D:\git\coverlet\src\coverlet.console\bin\Release\netcoreapp2.2\coverlet.console.dll
coverlet.console -> D:\git\coverlet\src\coverlet.console\bin\Release\netcoreapp2.2\publish\
Successfully created package 'D:\git\coverlet\bin\Release\Packages\coverlet.msbuild.2.8.1.nupkg'.
Successfully created package 'D:\git\coverlet\bin\Release\Packages\coverlet.msbuild.2.8.1.snupkg'.
Successfully created package 'D:\git\coverlet\bin\Release\Packages\coverlet.console.1.7.1.nupkg'.
Successfully created package 'D:\git\coverlet\bin\Release\Packages\coverlet.console.1.7.1.snupkg'.
Successfully created package 'D:\git\coverlet\bin\Release\Packages\coverlet.collector.1.2.1.nupkg'.
Successfully created package 'D:\git\coverlet\bin\Release\Packages\coverlet.collector.1.2.1.snupkg'.
  1. Sign the packages using SignClient tool https://www.nuget.org/packages/SignClient
 SignClient "Sign" `
>> --baseDirectory "REPO ROOT DIRECTORY\bin" `
>> --input "**/*.nupkg" `
>> --config "ROOT REPO DIRECTORY\eng\signclient.json" `
>> --user "USER" `
>> --secret "SECRET" `
>> --name "Coverlet" `
>> --description "Coverlet" `
>> --descriptionUrl "https://github.com/coverlet-coverage/coverlet"
  1. Upload *.nupkg files to Nuget.org site. Check all metadata(url links, deterministic build etc...) before "Submit"

  2. On your fork: