This page describes the sequence of steps required for making an ITK release. There are typically two feature releases a year, around December and June, and one to three bug fixes between feature releases.
git shortlog --no-merges v4.11.0..release
For details of each step, refer to the sections below.
git fetch git checkout master git reset --hard origin/master git checkout release git reset --hard origin/release
git shortlog --no-merges v4.10.0..release
git merge <bug-name>-for-release --no-ff
git checkout master git pull git merge release git push origin master release
Tagging the repository should only be done with the agreement of the developers after a tcon.
use the commmand
git checkout master git pull
to make sure that your source tree is updated. This must correspond to a source tree that has been fully tested in the Dashboard.
When tagging a bugfix release on the release branch, make sure to bump the ITK_VERSION_PATCH variable in the top level CMakeLists.txt before tagging. When tagging a feature release, make sure to bump the ITK_VERSION_MINOR version on the master branch after tagging.
Note: At this time, Brad King, Matt McCormick, Francois Budin, or Jean-Christophe Fillion-Robin are the person to do this because of their trusted GPG key.
In the source tree that you just updated, use the command
git tag -m "ITK 4.5-rc03" -s v4.5rc03 f9d99ca3ad00116393c4e2ce899beb00695ebb24
where, of course you change v4.5rc03 for the correct release number and the hash to the correct commit.
Push it to the repository
git push origin v4.5rc03
Update the release branch only during features releases after the tag for the release. Perform a fast-forward merge of master into release:
git checkout release git reset --hard origin/release git merge --ff-only <version tag> git push origin release git checkout master
This will not create a new commit, only move the release branch to the tag, i.e. it will be fast forward.
For minor releases, merge release branch into master branch as for a normal commit, and resolve conflict (arising from mismatch in version number) by keeping master branch versions.
Schedule the next release, and update the Release Schedule page.
Release notes are prepared in a Google Doc.
A list of authors and new authors can be computed with this script.
Todo: Add more description of the structure of release notes.
Some builds may be difficult to add due to third-party dependencies.
This file:
https://github.com/thewtex/vtkGEB/blob/itk/itkgeb.stl
can be ordered from ShapeWays and sent to contributors. Deb Howell has generated excellent packaging.
Set the environmental or CMake variable ExternalData_OBJECT_STORES to a local directory. E.g.
export ExternalData_OBJECT_STORES=${HOME}/data
Pre-populate the store with the contents of the 'InsightData' tarballs from a previous release. Once the tarball extracted, move the content of its subfolder called .ExternalData in your local ExternalData_OBJECT_STORES directory.
Then, from the ITK build directory, configure ITK, enable ITK_WRAP_PYTHON, ITK_LEGACY_SILENT , BUILD_TESTING and BUILD_EXAMPLES.
If you have previously enabled remote modules using the same ITK source directory, either verify that they are enabled in your current build, or remove their source directory that has been added inside ITK source directory (Modules/Remote/{name_of_remote_module}).
Build the ITKData target
make ITKData
This will download new testing data since the previous release.
Next, run the script from within the ITK source directory:
./Utilities/Maintenance/ContentLinkSynchronization.sh ${ExternalData_OBJECT_STORES}
Do not use --cleanup as for the purpose of the GitHub resource, it is important to keep the older files: some are from older revisions of ITK, and people continue to use the older versions of ITK and request the testing data.
This is will verify all contents, fully populate the MD5/ and SHA512/ directories in the object store, and create any missing .md5 or .sha512 content links. If any new content link files are created, commit the result.
Next, archive the data on data.kitware.com. Create a folder, e.g. 4.11, in ITK/ITKTestingData
./Utilities/Maintenance/ArchiveTestingDataOnGirder.py --object-store ${HOME}/data --parent-id <the-girder-id-of-the-folder-created> --api-key <your-girder-user-api-key>
This script requires the girder-client Python package install from Girder master, November 2016 or later, (Girder >2.0.0).
Run the script
./Utilities/Maintenance/ArchiveTestingDataOnMidas.py
to upload the testing data from a local store on the ITK https://midas3.kitware.com/midas/ and http://slicer.kitware.com/midas3/ Community.
This script requires that pydas is installed. Note: If you get the following error message:
pydas.exceptions.InvalidPolicy: 'Request failed with HTTP status code 200, Midas Server error code -151, and response content {"stat":"fail","message":"Invalid policy or itemid","code":"-151"}'
make sure you have the permissions to write in the ITK collection on the Midas server.
Archive the InsightData contents on ITK's file server at Kitware
rsync -v -r /tmp/InsightToolkit-4.9.0/.ExternalData/MD5/ public:/projects/Insight/WWW/InsightWeb/files/ExternalData/MD5/
Update the data archive at https://github.com/InsightSoftwareConsortium/ITKTestingData
Once the repository has been tagged, we use the following script in the repository to create the tarballs:
Utilities/Maintenance/SourceTarball.bash --tgz --txz --zip
Note: tarballs can be created from a specific commit. The user can manually specify the version of ITK used to name the output files:
Utilities/Maintenance/SourceTarball.bash -v 4.10.1 11f687df0347df9c1fee757745c1f1976ec3cbfe
After the tarballs have been uploaded to SourceForge, check their MD5 sums (the "i" info button on Sourceforge.net and locally with the 'md5sum' command). Also, download them from SourceForge and run an Experimental build on Linux, OSX, and Windows.
Bump the ITK version in Superbuild/ExternalITKv4.cmake.
Set the DRAFT_WATERMARK CMake varable to OFF to remove the draft watermark.
Set the PDF_QUALITY_LEVEL CMake configuration option to "Screen" for the electronic version and "Printer" for the print version.
Turn on GENERATE_HTML.
To create ItkSoftwareGuide.pdf to put at itk.org/ItkSoftwareGuide.pdf from InsightSoftwareGuide-Book{1,2}-4.X.0.pdf, use pdftk
pdftk ITKSoftwareGuide-Book1.pdf ITKSoftwareGuide-Book2.pdf cat output /tmp/ItkSoftwareGuide.pdf
Set the PDF_QUALITY_LEVEL to "Printer", and rebuild.
Remove the junk initial page, and then also one of the blank pages so pages fall on "left-side / right-side" as formatted.
pdftk ITKSoftwareGuide-Book1.pdf cat 2-3 5-end output /tmp/ITKSoftwareGuide-Book1.pdf pdftk ITKSoftwareGuide-Book2.pdf cat 2-3 5-end output /tmp/ITKSoftwareGuide-Book2.pdf
rsync the newly generated pages to the web server.
rsync -rt html/ kitware@public:/projects/Insight/WWW/InsightWeb/ITKSoftwareGuide/html
Bump the Superbuild ITK version in Superbuild/External-ITK.cmake.
Rendered versions (epub, pdf, html) can be downloaded from the download page and rename them.
Create the source tarballs.
Set the prefix and tag:
tag=$(git describe) prefix=InsightSphinxExamples-4.10.0
Generate .zip and .tar.gz:
git archive --format=tar --prefix=${prefix}/ --output=${prefix}.tar ${tag} gzip -9 ${prefix}.tar git archive --format=zip -9 --prefix=${prefix}/ --output=${prefix}.zip ${tag}
Download the latest examples:
version=4.12.0
wget -O ITKWikiExamples-master.zip https://github.com/InsightSoftwareConsortium/ITKWikiExamples/archive/master.zip unzip ITKWikiExamples-master.zip mv ITKWikiExamples-master InsightWikiExamples-${version} zip -r InsightWikiExamples-${version}.zip InsightWikiExamples-${version} tar cvf InsightWikiExamples-${version}.tar InsightWikiExamples-${version} gzip -9 InsightWikiExamples-${version}.tar
Note: links to the nightly generated Doxygen can be found in the footer of the Doxygen HTML pages. Use the files to upload and create InsightDoxygenDocTag-4.11.0.gz, InsightDoxygenXml-4.11.0.tar.gz, InsightDoxygenDocHtml-4.11.0.tar.gz.s
Prior to the release, new Remote Modules should be enabled in the Doxygen build's configuration.
Historical note: Before ITK 3.8, The documentation used to be generated in a directory called Documentation/Doxygen.
scp InsightData-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightData-4.12.0.tar.xz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightData-4.12.0.zip kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightToolkit-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightToolkit-4.12.0.tar.xz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightToolkit-4.12.0.zip kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12scp InsightApplications-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12scp InsightApplications-4.12.0.zip kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12scp InsightDoxygenDocHtml-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightDoxygenDocTag-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightDoxygenDocXml-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp ItkSoftwareGuide.pdf kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightSoftwareGuide-Book1-4.12.0.pdf kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightSoftwareGuide-Book2-4.12.0.pdf kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightSoftwareGuideHtml-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightWikiExamples-4.12.0.tar.gz kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12 scp InsightWikiExamples-4.12.0.zip kitware@public:/projects/Insight/WWW/InsightWeb/files/v4.12
ssh kitware@public cd /projects/Insight/WWW/InsightWeb rm ItkSoftwareGuide.pdf ln -s files/v4.12/ItkSoftwareGuide.pdf ItkSoftwareGuide.pdf
This is to be done only by
Go to this page
https://sourceforge.net/downloads/itk/itk/
and provide user name and password
Then
After uploading, make sure to check the hashes on the uploads. These can be shown with the "(i)" button next to the file.
Large files, like the Doxygen HTML tarball, need to be uploaded with scp, a la:
scp InsightDoxygenDocHtml-4.7.0.tar.gz mmmccormic@frs.sourceforge.net:/home/frs/project/itk/itk/4.7/InsightDoxygenDocHtml-4.7.0.tar.gz
Contact Communications at Kitware in order to
Contact Communications at Kitware in order to update the page:
http://www.itk.org/ITK/help/documentation.html
The content should be updated to point to the Doxygen documentation of the current release
Delete the old entry and add a new entry in the scheduled releases page
Add the "What's New" and "What's Changed" entries to the Releases page.
Update this web-page with the e-mail sent to the ITK mailing indicating the notable changes and other important information about the release.
From a Linux system, cd into an ITK Git directory and run
git shortlog --topo-order --no-merges v4.0.0..v4.1.0
Delete the KWRobot time stamp commits.
Contact Zack and request to do the following:
The purpose of this testing is to replicate the experience that a user may have when trying the new release.
This means that a number of ITK developers should download the tarballs or do Git checkouts with the release tag, and build the toolkit in as many configuration as possible.