Skip to content
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.

Releasing XMLUnit for Java

  • 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 change mvn 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

Releasing XMLUnit.NET

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 .pdbs 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 and src/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 and src/shared/CommonAssemblyInfo.cs and commit/push the change
  • close the milestone for the release and create a new one for the next release