https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/ReleaseProcess&feed=atom&action=history
Documentation/4.4/Developers/ReleaseProcess - Revision history
2024-03-28T13:56:16Z
Revision history for this page on the wiki
MediaWiki 1.33.0
https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/ReleaseProcess&diff=62662&oldid=prev
Grundlett: Text replacement - "'/slicerWiki/'" to "'/wiki/'"
2019-11-27T14:29:52Z
<p>Text replacement - "'/slicerWiki/'" to "'/wiki/'"</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 14:29, 27 November 2019</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l217" >Line 217:</td>
<td colspan="2" class="diff-lineno">Line 217:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>>>> import mwdoc</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>>>> import mwdoc</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>>>> doc = mwdoc.Documentation('slicer.org', '/<del class="diffchange diffchange-inline">slicerWiki</del>/')</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>>>> doc = mwdoc.Documentation('slicer.org', '/<ins class="diffchange diffchange-inline">wiki</ins>/')</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>>>> doc.login('UpdateBot', 'XXXXXXX')</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>>>> doc.login('UpdateBot', 'XXXXXXX')</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>>>> doc.versionPages('Nightly', '4.3', ['Documentation', 'Template:Documentation'])</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>>>> doc.versionPages('Nightly', '4.3', ['Documentation', 'Template:Documentation'])</div></td></tr>
</table>
Grundlett
https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/ReleaseProcess&diff=40493&oldid=prev
UpdateBot: Nightly -> 4.4
2014-12-25T06:54:22Z
<p>Nightly -> 4.4</p>
<p><b>New page</b></p><div>== Create release dashboard scripts ==<br />
<br />
{{wip}}<br />
<br />
== Feature freeze ==<br />
<br />
Usually ~1 month before release.<br />
<br />
== Prerequisites ==<br />
<br />
* Update modules documentation link in help section (loadable, scripted and cli)<br />
** And some html links in Welcome module (Modules/Loadable/SlicerWelcome/Resources/HTML)<br />
** Update CLI XML description files<br />
<br />
Commit message: <code>Update Documentation to X.Y</code><br />
<br />
For example: [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=22407 r22407]<br />
<br />
== Release-candidate ==<br />
<br />
Since there all development occurs on <code>master</code>, each time version is updated, two commits will be required.<br />
<br />
<code><RC></code> corresponds to the release candidate number. It is greater or equal to one.<br />
<br />
<ol start="1" style="list-style-type: decimal;"><br />
<br />
<li><p>Update the Slicer version information for the release candidate:</p><br />
<ol style="list-style-type: lower-roman;"><br />
<li><p>In <code>CMakeLists.txt</code>, uncomment and set:</p><br />
*<code>Slicer_VERSION_TWEAK</code> to <code>0</code><br />
*<code>Slicer_VERSION_RC</code> to <code><RC></code><br />
<p>...and if this is the first release candidate, update at least one these variables: <code>Slicer_VERSION_MAJOR</code>, <code>Slicer_VERSION_MINOR</code>, <code>Slicer_VERSION_PATCH</code></p><br />
</li><br />
<li>Re-run CMake in order to update <code>Utilities/Scripts/SlicerWizard/__version__.py</code>.</li><br />
<li><p>Commit the above changes using this message:</p><br />
ENH: Slicer X.Y.Z-rc<RC><br />
</li><br />
</ol><br />
</li><br />
<br />
<li>Generate packages based on REVISION associated with step 1.</li><br />
<br />
<li><p>Update the Slicer version information for the development:</p><br />
<ol style="list-style-type: lower-roman;"><br />
<li>In <code>CMakeLists.txt</code>, comment <code>Slicer_VERSION_TWEAK</code> so that the next builds will contain the date associated with the last commit.</li><br />
<li>Re-run CMake in order to update <code>Utilities/Scripts/SlicerWizard/__version__.py</code>.</li><br />
</li><br />
<li><p>Commit the above changes using this message:</p><br />
ENH: Begin post-X.Y.Z-rc<RC> development<br />
</li><br />
</ol><br />
<br />
</ol><br />
<br />
== Release ==<br />
<br />
Since there all development occurs on <code>master</code>, each time version is updated, two commits will be required.<br />
<br />
<ol start="1" style="list-style-type: decimal;"><br />
<br />
<li><p>Update the Slicer version information for the release:</p><br />
<ol style="list-style-type: lower-roman;"><br />
<li><p>In <code>CMakeLists.txt</code>, uncomment and set <code>Slicer_VERSION_TWEAK</code> to <code>0</code></p><br />
<p>...and if this no release candidate has been made, update at least one these variables: <code>Slicer_VERSION_MAJOR</code>, <code>Slicer_VERSION_MINOR</code>, <code>Slicer_VERSION_PATCH</code></p><br />
</li><br />
<li>Re-run CMake in order to update <code>Utilities/Scripts/SlicerWizard/__version__.py</code>.</li><br />
<li><p>Commit the above changes using this message:</p><br />
ENH: Slicer X.Y.Z<br />
</li><br />
</ol><br />
</li><br />
<br />
<li>Generate packages based on REVISION associated with step 1.<br />
<br />
<li><p>Tag the repository:</p><br />
svn copy -r<REVISION> http://svn.slicer.org/Slicer4/trunk \<br />
http://svn.slicer.org/Slicer4/tags/Slicer-X-Y \<br />
-m "ENH: Tag of X.Y.Z release based on r<REVISION>."<br />
</li><br />
<br />
<li><p>Update the Slicer version information for the development:</p><br />
<ol style="list-style-type: lower-roman;"><br />
<li><p>In <code>CMakeLists.txt</code>, comment and set:</p><br />
* <code>Slicer_VERSION_TWEAK</code> to <code>0</code> so that the next builds will contain the date associated with the last commit.<br />
* <code>Slicer_VERSION_RC</code> to <code>0</code><br />
</li><br />
<li>Re-run CMake in order to update <code>Utilities/Scripts/SlicerWizard/__version__.py</code>.</li><br />
<li><p>Commit the above changes using this message:</p><br />
ENH: Begin post-X.Y.Z development<br />
</li><br />
</ol><br />
</li><br />
<br />
</ol><br />
<br />
== Post release ==<br />
<br />
=== Create a release branch ===<br />
<br />
svn copy -r <REVISION> http://svn.slicer.org/Slicer4/trunk http://svn.slicer.org/Slicer4/branches/Slicer-X-Y \<br />
-m "ENH: Branching from trunk to Slicer-X-Y at <REVISION>"<br />
<br />
<br />
svn checkout http://svn.slicer.org/Slicer4/branches/Slicer-X-Y<br />
<br />
=== Generate ChangeLog ===<br />
<br />
* See [https://raw.github.com/cryos/avogadro/master/scripts/gitlog2changelog.py gitlog2changelog.py]. More details [http://blog.cryos.net/archives/202-Git-and-Automatic-ChangeLog-Generation.html here].<br />
<br />
* Update [[Release Details]] page using generated ChangeLog<br />
<br />
=== Update Mantis ===<br />
<br />
* "Release" current target<br />
* Create new target<br />
* Check the "fixed in" fields<br />
<br />
=== Midas ===<br />
<br />
==== Tag release packages ====<br />
<br />
* If needed, create a X.Y.Z folder in [http://slicer.kitware.com/midas3/folder/274 Slicer/Packages/Application/Release]<br />
** Copy uploaded packages into the folder created above<br />
** Identify the item_id associated with uploaded packages. For example: 11926, 11925, 11927, 11992<br />
** SSH connect to <code>jcfr@slicer.kitwarein.com</code><br />
** Connect to mysql using <code>mysql -u midas -p</code><br />
*** See file <code>/var/www/midas3/core/configs/database.local.ini</code> for password<br />
*** Choose midas database: <code>use midas</code><br />
** List packages associated with identified items and check they are the appropriate ones:<br />
*** <code>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);</code><br />
** Set release field<br />
*** <code>update slicerpackages_package set `release`="4.2.2-1" where item_id in (11926, 11925, 11927, 11992);</code><br />
<br />
==== Version NA-MIC data tree ====<br />
<br />
<ol start="1" style="list-style-type: decimal;"><br />
<br />
<li><p>[[Documentation/{{documentation/version}}/Developers/Tutorials/ObtainExtensionServerApiKey|Create an account on the extension server and obtain an API Key]]. You will then use your midas login and api key to substitute <code><YOUR-MIDAS-LOGIN></code> and <code><YOUR-MIDAS-APIKEY></code> in the examples.</p></li><br />
<br />
<li><p>If not already done, go to [http://slicer.kitware.com/midas3/community/23 NA-MIC community] and click on <code>Join community</code></p></li><br />
<br />
<li><p>Send an email on the developer list asking to be added to the <code>DataManager</code> group on NA-MIC community. That will grant you read/write permissions to the <code>Data</code> folder and sub-folders.</p></li><br />
<br />
<li><p>Install prerequisites</p><br />
<pre><br />
$ sudo pip install pydas<br />
</pre></li><br />
<br />
<li><p>Identify <code>id</code> of the <code>Data</code> folder. For example [http://slicer.kitware.com/midas3/folder/301 301]</p></li><br />
<br />
<li><p>Simulate creation of <code>X.Y</code> data folders based <code>Nightly</code> ones</p><br />
<pre><br />
$ cd /path/to/Slicer/Base/Python/slicer/release<br />
$ python midasdata.py --url=http://slicer.kitware.com/midas3 --data_id=301 \<br />
--email=<YOUR-MIDAS-LOGIN> --apikey=<YOUR-MIDAS-APIKEY> --source_version=Nightly --dest_version=X.Y --dry-run<br />
Application ( folder_id: 302 )<br />
'-Nightly ( folder_id: 831 )<br />
'-'-Testing ( folder_id: 832 )<br />
'-'-'-Baseline ( folder_id: 889 )<br />
'-'-'-'-DiffusionTensorImagingTutorial.png ( item_id: 12067 )<br />
'-'-'-'-NeurosurgicalPlanningTutorial.png ( item_id: 12066 )<br />
'-'-'-'-SlicerTestingTest.png ( item_id: 17760 )<br />
'-'-'-Input ( folder_id: 833 )<br />
'-'-'-'-AtlasTests ( folder_id: 834 )<br />
'-'-'-'-'-2012-10-26-BrainAtlas.mrb ( item_id: 10276 )<br />
[...]<br />
Module: VotingBinaryHoleFillingImageFilter ( folder_id: 1491 )<br />
'-Nightly ( folder_id: 1491 )<br />
'-'-Testing ( folder_id: 1492 )<br />
'-'-'-Baseline ( folder_id: 1493 )<br />
'-'-'-'-VotingBinaryHoleFillingImageFilterTest.nhdr ( item_id: 103418 )<br />
'-'-'-'-VotingBinaryHoleFillingImageFilterTest.raw.gz ( item_id: 103419 )<br />
<br />
</pre><br />
</li><br />
<br />
<li><p>Create <code>X.Y</code> data tree based <code>Nightly</code> ones</p><br />
<pre><br />
$ python midasdata.py --url=http://slicer.kitware.com/midas3 --data_id=301 \<br />
--email=<YOUR-MIDAS-LOGIN> --apikey=<YOUR-MIDAS-APIKEY> --source_version=Nightly --dest_version=X.Y<br />
<br />
Versioning of the NA-MIC Data tree for release X.Y...<br />
Versioning Modules...<br />
[...]<br />
Versioning Modules...[DONE]<br />
Versioning Application...<br />
Creating folder X.Y under Application directory<br />
Duplicating subfolders from Nightly to X.Y...<br />
Duplicating subfolders from Nightly to X.Y...[DONE]<br />
Versioning Application...[DONE]<br />
Versioning of the NA-MIC Data tree for release X.Y...[DONE]<br />
<br />
</pre></li><br />
<br />
</ol><br />
<br />
=== Update Slicer wiki ===<br />
<br />
The copy of the pages associated with the <code>Nightly</code> namespace into the <code>X.Y</code> namespace is done using the convenience python module [https://github.com/jcfr/mwdoc#readme mwdoc].<br />
<br />
<ol start="1" style="list-style-type: decimal;"><br />
<br />
<li><p>Check with <email>jchris.fillionr@kitware.com</email> to get the credential associated with <code>UpdateBot</code> user.</p></li><br />
<br />
<li><br />
<p>Copy <code>Nightly</code> pages into <code>X.Y</code> pages.</p><br />
<pre><br />
$ cd ~/Projects<br />
<br />
$ sudo pip install mwclient==0.6.5<br />
<br />
$ git clone git://github.com/jcfr/mwdoc<br />
<br />
$ cd mwdoc<br />
<br />
$ python<br />
<br />
>>> import mwdoc<br />
>>> doc = mwdoc.Documentation('slicer.org', '/slicerWiki/')<br />
>>> doc.login('UpdateBot', 'XXXXXXX')<br />
>>> doc.versionPages('Nightly', '4.3', ['Documentation', 'Template:Documentation'])<br />
[INFO] Page successfully created: 'Documentation/4.3/Extensions/ErodeDilateLabel'<br />
[...]<br />
[INFO] Page successfully created: 'Template:Documentation/4.3/module-header'<br />
[INFO] Page successfully created: 'Template:Documentation/4.3/module-section'<br />
[INFO] Page successfully created: 'Template:Documentation/4.3/module/footer'<br />
</pre><br />
</li><br />
<br />
<li><p>Update [[Template:Documentation/nextversion]]</p></li><br />
<br />
<li><p>Update [[Template:Documentation/currentversion]]</p></li><br />
<br />
<li><p>Update [[Template:Documentation/versionlist]]</p></li><br />
<br />
<li><p>Update [[FAQ]]</p></li><br />
<br />
<li><p>Update [[Documentation]]</p></li><br />
<br />
<li><p>Update [[Documentation/Release]]</p></li><br />
<br />
<li><p>Update [[Documentation/Release/Announcements]]</p></li><br />
<br />
<li><p>Update [[Documentation/UserTraining]]</p></li><br />
<br />
<li><p>Update [[Documentation/UserOrientation]]</p></li><br />
<br />
<li><p>Update [[Documentation/DeveloperOrientation]]</p></li><br />
</ol><br />
<br />
=== CDash ===<br />
<br />
<ol start="1" style="list-style-type: decimal;"><br />
<li><p>Create new CDash groups for extension submissions associated with <code>X.Y</code> release:</p><br />
<pre><br />
Extensions-X.Y-Nightly<br />
Extensions-X.Y-Continuous<br />
</pre></li><br />
<br />
</ol><br />
<br />
=== Update external website ===<br />
<br />
* http://en.wikipedia.org/wiki/3DSlicer<br />
* http://www.nitrc.org/projects/slicer/<br />
<br />
=== Tag associated projects ===<br />
* Slicer/SlicerExecutionModel<br />
* Slicer/VTK<br />
* Slicer/ITK<br />
* commontk/CTK ?<br />
* commontk/PythonQt ?<br />
<br />
=== Backport commit into release branch ===<br />
<br />
The following steps will lead to the creation of new git-svn clone having two branches:<br />
* <code>git-svn</code><br />
* <code>git-svn-XY</code><br />
<br />
Reference: http://www.dmo.ca/blog/20070608113513/<br />
<br />
==== Step 1: Checkout sources ====<br />
<br />
git clone git://github.com/Slicer/Slicer.git Slicer-X.Y<br />
cd Slicer-X.Y<br />
git svn init http://svn.slicer.org/Slicer4/trunk<br />
git update-ref refs/remotes/git-svn refs/remotes/origin/master<br />
git checkout master<br />
git svn rebase<br />
<br />
==== Step 2: Add release branch remote ====<br />
<br />
Edit <code>.git/config</code>, and in addition to the existing 'git-svn' remote, add the following one:<br />
<br />
[svn-remote "svn-XY"]<br />
url = http://svn.slicer.org/Slicer4/branches/Slicer-X-Y<br />
fetch = :refs/remotes/git-svn-XY<br />
<br />
==== Step 3: Pull associated SVN branch ====<br />
<br />
git svn fetch svn-XY<br />
git checkout -b master-XY git-svn-XY<br />
<br />
==== Step 4: Backport ====<br />
<br />
We can now cherry pick commit associated with master (trunk) into <code>master-XY</code> (Slicer-X-Y)<br />
<br />
==== Step 5: Create a patch release ====<br />
<br />
{{wip}}<br />
<br />
<!--<br />
Slicer trunk: Update Major/Minor/Patch version to match latest release<br />
--></div>
UpdateBot