This document describes how Noda Time is released. It is intended to be used as
a checklist by the person doing a release. It only covers doing a
new major/minor release; patch releases are generally just a matter
Build.Directory.props, tagging the right branch and running
pushing the results as shown below.
When everybody's happy, there are no issues outstanding for the milestone, and all the tests pass.
Search the issue tracker for open issues with the right milestone (e.g.
is:open is:issue milestone:1.4.0).
Directory.Build.propsin the root directory; this contains the version number
2.3.0against the new branch
This is performed locally, in bash. We currently use the bash that comes with Git for Windows. The release scripts may work in other environments too. (We definitely intend to move to a CI release system at some point.)
Optionally fetch the new branch (it doesn't matter too much)
In the build directory, run
./buildrelease.sh 2.3.0 and wait.
This will clone the repo for the specific tag and build
everything required. It takes a little while as even the slow
tests are run.
The build results will be in
releasebuild/artifacts. Switch to
Upload the zip files to Google Cloud Storage, e.g. with
gsutil.cmd cp *.zip gs://nodatime/releases
Push the NuGet packages, e.g. with
for i in *.nupkg; do nuget push -source https://api.nuget.org/v3/index.json -apikey API_KEY $i; done
Hash the storage files. In the
build directory, run
dotnet run -p HashStorageFiles
Make changes in the master branch
unstabledirectory in NodaTime.Web/Markdown to
2.3.x/index.jsonto specify the name
unstabledirectory and copy index.json from
unstable/index.jsonto have a name of
unstableand a parent of
MapRoutecall for the 2.3.x user guide
AddRedirectcall to refer to 2.3.x
anyVersionregex to include 2.3.x
Views/Shared/_Layout.cshtmlto include 2.3.x in the menu and make it "current" while 2.2.x becomes "Old" (both user guide and API)
buildhistory.sh(this is pretty involved)
docfx-unstable.jsonto include 2.3.x in
update-2.3.shand edit it accordingly
tzdbupdate/update-all.shto call the new script
Create a pull request with all these changes in. Review carefully, and merge. The web site will then automatically be updated.