Releasing XMLUnit
Stefan Bodewig edited this page Oct 30, 2020
·
21 revisions
Obviously only people with access to XMLUnit's git repository can cut releases. For the Java version you also need write access to the org.xmlunit
groupId at Sonatype's OSS Nexus, for the .NET version you need permission to publish the XMLUnit Nuget packages.
- make sure your
main
branch is at HEAD - set the version number inside the POMs
mvn versions:set -DnewVersion=2.0.0-alpha-02 -DgenerateBackupPoms=false
- set the version number in
.travis.yml
- set the version number and release date in
RELEASE-NOTES.md
- make sure things build as expected
mvn clean test
- commit the changes, tag the commit
git tag -s -m "Tagging 2.0.0-alpha-02" v2.0.0-alpha-02
- build and publish the maven artifacts
mvn clean deploy -Psonatype-oss-release,release
- login to Sonatype's OSS Nexus check the artifacts looks fine, close the staging repo and release it.
- build the javadocs for the site
mvn javadoc:aggregate
- publish the javadocs to the website
- create the more conventional tarballs
./create-bin-dist.sh 2.0.0-alpha-02
- push the tag
git push --tags
- go to https://github.com/xmlunit/xmlunit/releases and "draft a new release" for the tag, upload all the tars and zips created by the script together with their checksums and signatures
- verify the uploaded files and after that publish the release
- bump the version inside the poms and
.travis.yml
and commit/push the changemvn versions:set -DnewVersion=2.0.0-alpha-03-SNAPSHOT -DgenerateBackupPoms=false
- close the milestone for the release and create a new one for the next release
This is a bit more complex, in particular since my (Stefan's) preferred work environment is Linux but the release binaries need to get built on Windows (so I get proper .pdb
s and nuget works as expected). Most likely things could be more streamlined if the release manager had more experience publishing OSS .NET libraries ;-)
- make sure your
main
branch is at HEAD - set the version number inside
src/doc/monodoc/core/index.xml
andsrc/shared/CommonAssemblyInfo.cs
- for the assembly version pick the one AppVeyor is going to use after you've pushed the commit (i.e. one bigger than the last build number) - set the version number and release date in
RELEASE_NOTES.md
- make sure things build as expected:
msbuild XMLUnit.NET.NetFramework.sln
dotnet restore XMLUnit.NET.sln
dotnet build XMLUnit.NET.sln
dotnet test src/tests/net-core/XMLUnit.Core.Tests.csproj
dotnet test src/tests/net-constraints-nunit3/XMLUnit.NUnit3.Constraints.Test.csproj
dotnet test src/tests/net-placeholders/XMLUnit.Placeholders.Tests.csproj
- commit the changes, tag the commit
git tag -s -m "Tagging 2.0.0-alpha-02" v2.0.0-alpha-02
- build release artifacts:
msbuild /p:Configuration=Release XMLUnit.NET.NetFramework.sln
dotnet build XMLUnit.NET.sln -c Release
- build the nuget packages
NuGet pack src\main\net-core\XMLUnit.Core.nuspec -Symbols -OutputDirectory build\ -Properties version=2.7.0-beta-01
NuGet pack src\main\net-constraints-nunit2\XMLUnit.NUnit2.Constraints.nuspec -Symbols -OutputDirectory build -Properties version=2.7.0-beta-01
NuGet pack src\main\net-constraints-nunit3\XMLUnit.NUnit3.Constraints.nuspec -Symbols -OutputDirectory build -Properties version=2.7.0-beta-01
NuGet pack src\main\net-placeholders\XMLUnit.Placeholders.nuspec -Symbols -OutputDirectory build -Properties version=2.7.0-beta-01
- publish the nuget packages
- build the apidocs for the site
./src/doc/monodoc/run-monodoc.sh
- publish the apidocs to the website
- create the more conventional tarballs
./create-dist.sh 2.0.0-alpha-02
- pgp sign the tarballs
gpg --detach-sign --armor
- push the tag
git push --tags
- go to https://github.com/xmlunit/xmlunit.net/releases and "draft a new release" for the tag, upload all the tars and zips created by the script together with their checksums and signatures
- verify the uploaded files and after that publish the release
- bump the version number inside
appveyor.yml
,src/doc/monodoc/core/index.xml
andsrc/shared/CommonAssemblyInfo.cs
and commit/push the change - close the milestone for the release and create a new one for the next release