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
of tagging the right branch and running buildrelease.sh
, then
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
).
2.3.x
from master2.3.0
against the new branchThis 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.
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
that directory.
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
unstable
directory in NodaTime.Web/Markdown to 2.3.x
2.3.x/index.json
to specify the name 2.3.x
unstable
directory and copy index.json from 2.3.x
unstable/index.json
to have a name of unstable
and a
parent of 2.3.x
Startup.cs
:
MapRoute
call for the 2.3.x user guideAddRedirect
call to refer to 2.3.xanyVersion
regex to include 2.3.xViews/Shared/_Layout.cshtml
to 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)buildapidocs.sh
build/docfx/docfx-2.2.x.json
to docfx-2.3.x.json
docfx-unstable.json
to include 2.3.x in content
and overwrite
tzdbupdate/update-2.2.sh
to update-2.3.sh
and edit it accordinglytzdbupdate/update-all.sh
to call the new scriptbuild/buildhistory.sh
Create a pull request with all these changes in. Review carefully, and merge. The web site will then automatically be updated.