Documentation/Nightly/Developers/ReleaseProcess
Contents
Release planning
Usually ~1 month before release.
- Sept 13: Discussed next release during the dev hangout
Prerequisites
Note: These updates should NOT be needed anymore.
Indeed, following r22423, r22424 and r25430 documentation URLs should all reference the Nightly
namespace and are automatically updated at runtime.
Make sure to patch VS2008 using the script fix-vc9-redist-manifests.ps1
- VS2013 is now used
Update modules documentation link in help section (loadable, scripted and cli)And some html links in Welcome module (Modules/Loadable/SlicerWelcome/Resources/HTML)- Not needed since r25430Update CLI XML description files
Commit message: Update Documentation to X.Y
For example: r22407
Release-candidate
This step is NOT part of our current release process. |
Since there all development occurs on master
, each time version is updated, two commits will be required.
<RC>
corresponds to the release candidate number. It is greater or equal to one.
Update the Slicer version information for the release candidate:
In
CMakeLists.txt
, uncomment and set:Slicer_VERSION_TWEAK
to0
Slicer_VERSION_RC
to<RC>
...and if this is the first release candidate, update at least one these variables:
Slicer_VERSION_MAJOR
,Slicer_VERSION_MINOR
,Slicer_VERSION_PATCH
- Re-run CMake in order to update
Utilities/Scripts/SlicerWizard/__version__.py
. Commit the above changes using this message:
ENH: Slicer X.Y.Z-rc<RC>
- Generate packages based on REVISION associated with step 1.
Update the Slicer version information for the development:
- In
CMakeLists.txt
, commentSlicer_VERSION_TWEAK
so that the next builds will contain the date associated with the last commit. - Re-run CMake in order to update
Utilities/Scripts/SlicerWizard/__version__.py
. Commit the above changes using this message:
ENH: Begin post-X.Y.Z-rc<RC> development
- In
Release
Since there all development occurs on master
, each time version is updated, two commits will be required.
Update the Slicer version information for the release:
In
CMakeLists.txt
, uncomment and setSlicer_VERSION_TWEAK
to0
...and if this no release candidate has been made, update at least one these variables:
Slicer_VERSION_MAJOR
,Slicer_VERSION_MINOR
,Slicer_VERSION_PATCH
- Re-run CMake in order to update
Utilities/Scripts/SlicerWizard/__version__.py
. Commit the above changes using this message:
ENH: Slicer X.Y.Z
- Generate packages based on REVISION associated with step 1.
Tag the repository:
svn copy -r<REVISION> http://svn.slicer.org/Slicer4/trunk \ http://svn.slicer.org/Slicer4/tags/Slicer-X-Y \ -m "ENH: Tag of X.Y.Z release based on r<REVISION>."
Update the Slicer version information for the development:
In
CMakeLists.txt
, comment and set:Slicer_VERSION_TWEAK
to0
so that the next builds will contain the date associated with the last commit.Slicer_VERSION_RC
to0
- Re-run CMake in order to update
Utilities/Scripts/SlicerWizard/__version__.py
. Commit the above changes using this message:
ENH: Begin post-X.Y.Z development
Post release
Create a release branch
svn copy -r <REVISION> http://svn.slicer.org/Slicer4/trunk http://svn.slicer.org/Slicer4/branches/Slicer-X-Y \ -m "ENH: Branching from trunk to Slicer-X-Y at <REVISION>"
svn checkout http://svn.slicer.org/Slicer4/branches/Slicer-X-Y
Generate ChangeLog
- See gitlog2changelog.py. More details here.
- Update Release Details page using generated ChangeLog
Update Mantis
- "Release" current target
- Create new target
- Check the "fixed in" fields
Midas
Tag release packages
- If needed, create a X.Y.Z folder in Slicer/Packages/Application/Release
- Copy uploaded packages into the folder created above
- Identify the item_id associated with uploaded packages. For example: 11926, 11925, 11927, 11992
- SSH connect to
jcfr@slicer.kitware.com
- Connect to mysql using
mysql -u midas -p
- See file
/var/www/midas3/core/configs/database.local.ini
for password - Choose midas database:
use midas
- See file
- List packages associated with identified items and check they are the appropriate ones:
select * from slicerpackages_package as p , item as i where i.item_id = p.item_id and p.item_id in (11926, 11925, 11927, 11992);
- Set release field
update slicerpackages_package set `release`="4.2.2-1" where item_id in (11926, 11925, 11927, 11992);
Version NA-MIC data tree
Create an account on the extension server and obtain an API Key. You will then use your midas login and api key to substitute
<YOUR-MIDAS-LOGIN>
and<YOUR-MIDAS-APIKEY>
in the examples.If not already done, go to NA-MIC community and click on
Join community
Send an email on the developer list asking to be added to the
DataManager
group on NA-MIC community. That will grant you read/write permissions to theData
folder and sub-folders.Install prerequisites
$ pip install pydas
Identify
id
of theData
folder. For example 301Simulate creation of
X.Y
data folders basedNightly
ones$ cd /path/to/Slicer/Base/Python/slicer/release $ python midasdata.py --url=http://slicer.kitware.com/midas3 --data_id=301 \ --email=<YOUR-MIDAS-LOGIN> --apikey=<YOUR-MIDAS-APIKEY> --source_version=Nightly --dest_version=X.Y --dry-run Application ( folder_id: 302 ) '-Nightly ( folder_id: 831 ) '-'-Testing ( folder_id: 832 ) '-'-'-Baseline ( folder_id: 889 ) '-'-'-'-DiffusionTensorImagingTutorial.png ( item_id: 12067 ) '-'-'-'-NeurosurgicalPlanningTutorial.png ( item_id: 12066 ) '-'-'-'-SlicerTestingTest.png ( item_id: 17760 ) '-'-'-Input ( folder_id: 833 ) '-'-'-'-AtlasTests ( folder_id: 834 ) '-'-'-'-'-2012-10-26-BrainAtlas.mrb ( item_id: 10276 ) [...] Module: VotingBinaryHoleFillingImageFilter ( folder_id: 1491 ) '-Nightly ( folder_id: 1491 ) '-'-Testing ( folder_id: 1492 ) '-'-'-Baseline ( folder_id: 1493 ) '-'-'-'-VotingBinaryHoleFillingImageFilterTest.nhdr ( item_id: 103418 ) '-'-'-'-VotingBinaryHoleFillingImageFilterTest.raw.gz ( item_id: 103419 )
Create
X.Y
data tree basedNightly
ones$ python midasdata.py --url=http://slicer.kitware.com/midas3 --data_id=301 \ --email=<YOUR-MIDAS-LOGIN> --apikey=<YOUR-MIDAS-APIKEY> --source_version=Nightly --dest_version=X.Y Versioning of the NA-MIC Data tree for release X.Y... Versioning Modules... [...] Versioning Modules...[DONE] Versioning Application... Creating folder X.Y under Application directory Duplicating subfolders from Nightly to X.Y... Duplicating subfolders from Nightly to X.Y...[DONE] Versioning Application...[DONE] Versioning of the NA-MIC Data tree for release X.Y...[DONE]
Update Slicer wiki
The copy of the pages associated with the Nightly
namespace into the X.Y
namespace is done using the convenience python module mwdoc.
Check with <email>jchris.fillionr@kitware.com</email> to get the credential associated with
UpdateBot
user.-
Copy
Nightly
pages intoX.Y
pages.$ cd ~/Projects $ sudo pip install mwclient==0.6.5 $ git clone git://github.com/jcfr/mwdoc $ cd mwdoc $ python >>> import mwdoc >>> doc = mwdoc.Documentation('slicer.org', '/slicerWiki/') >>> doc.login('UpdateBot', 'XXXXXXX') >>> doc.versionPages('Nightly', '4.3', ['Documentation', 'Template:Documentation']) [INFO] Page successfully created: 'Documentation/4.3/Extensions/ErodeDilateLabel' [...] [INFO] Page successfully created: 'Template:Documentation/4.3/module-header' [INFO] Page successfully created: 'Template:Documentation/4.3/module-section' [INFO] Page successfully created: 'Template:Documentation/4.3/module/footer'
Update FAQ
Update Documentation
Update Documentation/Release
Update Documentation/UserTraining
Update Documentation/UserFeedback
Update Documentation/Release/SlicerApplication/HardwareConfiguration
CDash
Create new CDash groups for extension submissions associated with
X.Y
release:Extensions-X.Y-Nightly Extensions-X.Y-Continuous
ExtensionsIndex
See https://github.com/Slicer/ExtensionsIndex
1) Create branch X.Y based of master
Update external website
Tag associated projects
- Slicer/SlicerExecutionModel
- Slicer/VTK
- Slicer/ITK
- commontk/CTK ?
- commontk/PythonQt ?
Update User Survey
Title of the survey should be updated. See https://docs.google.com/forms/d/1rggxoTV5KL_vt3gX9BNNAcKH4pnL5lkMqPnklOThINg
Sign packages
MacOSX
As discussed in issue #3965, the code signing command is of the form:
codesign --deep --force --sign "Developer ID Application: <Name-of-certificate-in-keychain>" ./Slicer.app
where the argument to --sign
is the name of the developer's certificate in Mac OS X Keychain.app .
Note: The signing of MacOSX package is not yet implemented in our nightly and release build workflows. See Documentation/Nightly/Developers/Mac_OS_X_Code_Signing for more information.
Windows
TBD - See #2697
Also see Documentation/Nightly/Developers/Windows_Code_Signing for more information.
Backport commit into release branch
The following steps will lead to the creation of new git-svn clone having two branches:
git-svn
git-svn-XY
Reference: http://www.dmo.ca/blog/20070608113513/
Step 1: Checkout sources
git clone git://github.com/Slicer/Slicer.git Slicer-X.Y cd Slicer-X.Y git svn init http://svn.slicer.org/Slicer4/trunk git update-ref refs/remotes/git-svn refs/remotes/origin/master git checkout master git svn rebase
Step 2: Add release branch remote
Edit .git/config
, and in addition to the existing 'git-svn' remote, add the following one:
[svn-remote "svn-XY"] url = http://svn.slicer.org/Slicer4/branches/Slicer-X-Y fetch = :refs/remotes/git-svn-XY
Step 3: Pull associated SVN branch
git svn fetch svn-XY git checkout -b master-XY git-svn-XY
Step 4: Backport
We can now cherry pick commit associated with master (trunk) into master-XY
(Slicer-X-Y)
Step 5: Create a patch release