Align github and nuget release versions
6.9 KiB
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.
-
Clone the benchmark repository (https://github.com/reactiveui/refit)
-
Check if latest coverlet version is used by the project, otherwise add coverlet to the project (https://github.com/coverlet-coverage/coverlet#installation).
-
Create coverage report for latest coverlet version:
dotnet test --collect:"XPlat Code Coverage"
-
Update the test projects with the latest nightly build version of coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/ConsumeNightlyBuild.md).
-
Create coverage report for nightly build version by rerunning the tests:
dotnet test --collect:"XPlat Code Coverage"
- 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
- Update projects version in file
version.jsonin root of repo (remove-preview.{height}and adjust version)
Do a PR and merge to master.
-
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 -5from repo root to verify last commit. -
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'.
- 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"
-
Upload *.nupkg files to Nuget.org site. Check all metadata(url links, deterministic build etc...) before "Submit"
-
On your fork:
- Align to master
- Bump version by one (fix part) and re-add
-preview.{height} - Create release on repo https://github.com/coverlet-coverage/coverlet/releases
- Update the Release Plan(this document) and ChangeLog
- Do PR and merge