https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/ReleaseProcess&feed=atom&action=history
Documentation/4.10/Developers/ReleaseProcess - Revision history
2024-03-29T04:43:30Z
Revision history for this page on the wiki
MediaWiki 1.33.0
https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/ReleaseProcess&diff=62460&oldid=prev
Grundlett: Text replacement - "<email>(.*)@(.*)<\/email>" to "$1{{@}}$2"
2019-11-27T05:26:06Z
<p>Text replacement - "<email>(.*)@(.*)<\/email>" to "$1{{@}}$2"</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 05:26, 27 November 2019</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l225" >Line 225:</td>
<td colspan="2" class="diff-lineno">Line 225:</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>1) Install prerequisites:</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>1) Install prerequisites:</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;"></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="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>* Check with <del class="diffchange diffchange-inline"><email></del>jchris.fillionr@kitware.com<del class="diffchange diffchange-inline"></email> </del>to get the credential associated with <code>UpdateBot</code> user.</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>* Check with jchris.fillionr<ins class="diffchange diffchange-inline">{{</ins>@<ins class="diffchange diffchange-inline">}}</ins>kitware.com to get the credential associated with <code>UpdateBot</code> user.</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>* Install [https://pypi.python.org/pypi/mwdoc 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>* Install [https://pypi.python.org/pypi/mwdoc mwdoc]:</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;"></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>
</table>
Grundlett
https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/ReleaseProcess&diff=59764&oldid=prev
UpdateBot: Nightly -> 4.10
2018-10-19T00:43:34Z
<p>Nightly -> 4.10</p>
<p><b>New page</b></p><div>== Release planning ==<br />
<br />
* Decide what will be the version number for the next stable release<br />
* Update issue tracker: https://issues.slicer.org/roadmap_page.php<br />
* Define a release date<br />
* Announce the release: https://discourse.slicer.org/t/upcoming-slicer-4-8-release/1120<br />
<br />
== Day 1: Release ==<br />
<br />
Since there all development occurs on <code>master</code>, each time version is updated, two commits will be required.<br />
<br />
=== CMakeLists.txt: Update the Slicer version information for the release ===<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>, 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><br />
<p>Re-run CMake with <code>-DSlicer_RELEASE_TYPE:STRING=Stable</code>. This is required to update <code>Utilities/Scripts/SlicerWizard/__version__.py</code>.</p><br />
<p><small>{{note}}If not doing a clean build, make sure to explicitly specify the version re-configuring with <code>-DSlicer_VERSION_MAJOR:STRING=X -DSlicer_VERSION_MINOR:STRING=Y -DSlicer_VERSION_PATCH:STRING=Z .</code></small></p><br />
</li><br />
<li><p>Commit the above changes using this message like:</p><br />
ENH: Slicer X.Y.Z<br />
</li><br />
<li>Keep track of the <tt>SVN_REVISION</tt> and <tt>SVN_BRANCH</tt> for the next steps</li><br />
</ol><br />
</li><br />
<br />
</ol><br />
<br />
=== CMakeLists.txt: Update the Slicer version information for the development ===<br />
<br />
<ol start="2" style="list-style-type: decimal;"><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>,</p><br />
* Update <code>Slicer_VERSION_MAJOR</code> and/or <code>Slicer_VERSION_MINOR</code><br />
</li><br />
<li><br />
<p>Re-run CMake with <code>-DSlicer_RELEASE_TYPE:STRING=Experimental</code>. This is required to update <code>Utilities/Scripts/SlicerWizard/__version__.py</code>.</p><br />
<p><small>{{note}}If not doing a clean build, make sure to explicitly specify the version re-configuring with <code>-DSlicer_VERSION_MAJOR:STRING=X -DSlicer_VERSION_MINOR:STRING=Y -DSlicer_VERSION_PATCH:STRING=Z .</code></small></p><br />
</li><br />
<li><p>Commit the above changes using this message like:</p><br />
cd ~/Projects/Slicer<br />
git add -A<br />
git commit -m "ENH: Begin X.Y.Z development"<br />
</li><br />
</ol><br />
</li><br />
<br />
</ol><br />
<br />
=== Tag and publish SlicerBuildEnvironment docker image ===<br />
<br />
<ol start="3" style="list-style-type: decimal;"><br />
<li><br />
<p>Tag the docker build environment image. See https://github.com/Slicer/SlicerBuildEnvironment/blob/master/README.rst#maintainers</p><br />
<p><small>{{note}}If the environment did not change, you may skip this step for patch release.</small></p><br />
<p>Keep track of the selected <tt>TAG</tt> for updating the release scripts</p><br />
</li><br />
</ol><br />
<br />
=== Update release scripts ===<br />
<br />
<ol start="4" style="list-style-type: decimal;"><br />
<li>Update release scripts. See https://github.com/Slicer/DashboardScripts#maintenance-guides</li><br />
</ol><br />
<br />
=== Disable regular nightly builds ===<br />
<br />
<ol start="5" style="list-style-type: decimal;"><br />
<li>On each factory machines, disable regular nightly build in crontab and task scheduler.</li><br />
</ol><br />
<br />
=== Update ExtensionsIndex ===<br />
<br />
<i>This applies to https://github.com/Slicer/ExtensionsIndex</i><br />
<br />
<ol start="6" style="list-style-type: decimal;"><br />
<li><p>Create branch X.Y based of master:</p><br />
DEST_VERSION=X.Y<br />
<br />
cd /tmp<br />
git clone git@github.com:Slicer/ExtensionsIndex <br />
cd ExtensionsIndex<br />
git checkout master<br />
git push origin master:${DEST_VERSION}<br />
</li><br />
</ol><br />
<br />
=== Update CDash ===<br />
<br />
<i>This applies to the CDash instance associated with http://slicer.cdash.org/index.php?project=Slicer4</i><br />
<br />
<ol start="7" 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 />
=== Generate application and extension packages ===<br />
<br />
<ol start="8" style="list-style-type: decimal;"><br />
<li>Generate packages running Slicer package scripts on each factory machines. (These are the scripts updated in the previous step)</li><br />
</ol><br />
<br />
=== Tag the repository ===<br />
<br />
<ol start="9" style="list-style-type: decimal;"><br />
<li><p>Tag the repository:</p><br />
Set version variables:<br />
X=<major-version><br />
Y=<minor-version><br />
Z=<patch-version><br />
echo "X.Y.Z is ${X}.${Y}.${Z}"<br />
<br />
Set SVN revision variable:<br />
SVN_REVISION=<svn-revision-for-release><br />
<br />
SVN:<br />
cd ~/Projects<br />
svn checkout http://svn.slicer.org/Slicer4/trunk Slicer-${X}.${Y}-SVN<br />
cd Slicer-${X}.${Y}-SVN<br />
svn copy -r${SVN_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${SVN_REVISION}."<br />
<br />
GIT:<br />
cd ~/Projects<br />
git clone git@github.com:Slicer/Slicer Slicer-${X}.${Y}<br />
cd Slicer-${X}.${Y}<br />
<br />
#<br />
# Rollback by one commit to ignore the "ENH: Begin X.Y.Z development" commit<br />
#<br />
git reset --hard HEAD^<br />
<br />
#<br />
# >>> Make sure the current commit corresponds to ${SVN_REVISION}. <<<<br />
#<br />
git log -1<br />
<br />
git tag -s -m "ENH: Slicer ${X}.${Y}.${Z}" v${X}.${Y}.${Z} master<br />
git push origin v${X}.${Y}.${Z}<br />
</li><br />
</ol><br />
<br />
=== Create release branch ===<br />
<br />
<ol start="10" style="list-style-type: decimal;"><br />
<li><p>Create release branch:</p><br />
Set version variables (same value as in the previous step):<br />
X=<major-version><br />
Y=<minor-version><br />
Z=<patch-version><br />
echo "X.Y.Z is ${X}.${Y}.${Z}"<br />
<br />
Set SVN revision variable (same value as in the previous step):<br />
SVN_REVISION=<svn-revision-for-release><br />
<br />
SVN <small>(Keep track of the branch revision. It will be referred below as <code>BRANCHED_REVISION</code>.)</small>:<br />
cd ~/Projects/Slicer-${X}.${Y}-SVN<br />
svn copy -r ${SVN_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 r${SVN_REVISION}"<br />
<br />
svn switch http://svn.slicer.org/Slicer4/branches/Slicer-${X}-${Y}<br />
<br />
BRANCHED_REVISION=$(svn info | grep "Revision" | awk '{print $2}')<br />
echo "BRANCHED_REVISION is ${BRANCHED_REVISION}"<br />
<br />
GIT:<br />
cd ~/Projects/Slicer-${X}.${Y}<br />
<br />
# Source: http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/<br />
# and https://stackoverflow.com/questions/19712735/git-svn-cannot-setup-tracking-information-starting-point-is-not-a-branch<br />
<br />
git config --add svn-remote.svn-${X}${Y}.url http://svn.slicer.org/Slicer4/branches/Slicer-${X}-${Y}<br />
git config --add svn-remote.svn-${X}${Y}.fetch :refs/remotes/git-svn-${X}${Y}<br />
<br />
git svn fetch svn-${X}${Y} -r ${BRANCHED_REVISION}<br />
<br />
git checkout -b master-${X}${Y} remotes/git-svn-${X}${Y}<br />
<br />
git svn rebase<br />
<br />
git push origin master-${X}${Y}<br />
</li><br />
</ol><br />
<br />
=== Update Release Details on the wiki ===<br />
<br />
<ol start="11" style="list-style-type: decimal;"><br />
<li>Update [[Release Details]] with release information</li><br />
</ol><br />
<br />
== Day 2: Post release ==<br />
<br />
=== Re-enable regular nightly builds ===<br />
<br />
On each factory machines, re-enable build in crontab and task scheduler.<br />
<br />
=== Update Mantis ===<br />
<br />
<i>This applies to the Mantis instance associated with https://issues.slicer.org</i><br />
<br />
* "Release" current target<br />
* Create new target<br />
* Check the "fixed in" fields<br />
<br />
=== Update Slicer wiki ===<br />
<br />
<i>This applies to the MediaWiki instance associated with https://wiki.slicer.org</i><br />
<br />
There are two steps involved:<br />
* copy of the pages associated with the <code>Nightly</code> namespace into the <code>X.Y</code> namespace.<br />
* update of permanent pages referencing the current Slicer version<br />
<br />
As of November 2016, the process is fully automated and can be done using [https://github.com/Slicer/Slicer/tree/master/Base/Python/slicer/release/wiki.py Base/Python/slicer/release/wiki.py] script.<br />
<br />
1) Install prerequisites:<br />
<br />
* Check with <email>jchris.fillionr@kitware.com</email> to get the credential associated with <code>UpdateBot</code> user.<br />
* Install [https://pypi.python.org/pypi/mwdoc mwdoc]:<br />
<br />
<pre><br />
$ pip install mwdoc<br />
</pre><br />
<br />
2) Query current version information:<br />
<br />
<pre><br />
$ python Base/Python/slicer/release/wiki.py query<br />
</pre><br />
<br />
3) Copy and update pages<br />
<br />
<pre><br />
$ DEST_VERSION=X.Y<br />
<br />
$ python Base/Python/slicer/release/wiki.py update ${DEST_VERSION}<br />
$ python Base/Python/slicer/release/wiki.py copy ${DEST_VERSION}<br />
</pre><br />
<br />
The following pages have been updated:<br />
<br />
* [[Template:Documentation/prevversion]]<br />
* [[Template:Documentation/nextversion]]<br />
* [[Template:Documentation/currentversion]]<br />
* [[Template:Documentation/versionlist]]<br />
* [[Template:Documentation/acknowledgments-versionlist]]<br />
* [[Documentation]]<br />
* [[Documentation/Release/Acknowledgments]]<br />
<br />
The following pages with #REDIRECT have been updated: <br />
<br />
* [[FAQ]]<br />
* [[Documentation/Release]]<br />
* [[Documentation/Release/Announcements]]<br />
* [[Documentation/Release/Report a problem]]<br />
* [[Documentation/UserTraining]]<br />
* [[Documentation/UserFeedback]]<br />
* [[Documentation/Release/SlicerApplication/HardwareConfiguration]]<br />
<br />
=== Clean-up older nightly packages ===<br />
<br />
<i>This applies to the Midas instance associated with http://slicer.kitware.com</i><br />
<br />
See https://gist.github.com/jcfr/ea9ef199bd5a3e071b8f<br />
<br />
=== Manually sign packages ===<br />
<br />
<ol start="1" style="list-style-type: decimal;"><br />
<br />
<li>If needed, create a X.Y.Z folder in [http://slicer.kitware.com/midas3/folder/274 Slicer/Packages/Application/Release]</li><br />
<br />
<li>Download package from http://slicer.cdash.org/index.php?project=Slicer4</li><br />
<br />
<li><p>Sign the package following these instructions:<br />
<ul><br />
<!--<br />
<li>Linux: <i>Not available</i></li><br />
<li>macOS: <i>Not available</i></li><br />
--><br />
<li>Windows: [[Documentation/Nightly/Developers/Windows_Code_Signing]]</li><br />
</ul></p></li><br />
<br />
<li>Upload the signed package using [[Documentation/Nightly/Developers/ReleaseProcess#Script_to_upload_Slicer_packages|upload-Slicer-to-slicer-kitware-com.cmake]].</li><br />
<br />
<li>Manually update the name of the item appending <code> [signed]</code>. Make sure to <b>not</b> update the bitstream name. For example: see <tt>Slicer-4.8.0-win-amd64.exe [signed]</tt> available [http://slicer.kitware.com/midas3/item/316852 here]</li><br />
<br />
<li>For future reference, copy the unsigned packages into the folder created above (Keep the default <b>Create a reference to the existing item</b>)</li><br />
<br />
</ol><br />
<br />
=== Tag release packages ===<br />
<br />
<i>This applies to the Midas instance associated with http://slicer.kitware.com</i><br />
<br />
<br />
Since the <b>Windows</b> package was uploaded during the manual signing, it is already associated with the release tag. On the other hand, due to [[#Limitations_of_download.slicer.org|limitations]]<br />
of http://download.slicer.org, the <b>Linux</b> and <b>macOS</b> packages must be downloaded and re-uploaded.<br />
<br />
1) Download packages<br />
<br />
2) Compute md5 sums and check they correspond at the sum associated with download link posted on [http://slicer.cdash.org/index.php?project=Slicer4 http://slicer.cdash.org].<br />
<br />
2) Re-upload each packages using [[#Script_to_upload_Slicer_packages|upload-Slicer-to-slicer-kitware-com.cmake]] script.<br />
<br />
=== Confirm that packages are tagged ===<br />
<br />
To confirm that all three packages are tagged. The following URL should return three packages:<br />
<br />
http://slicer.kitware.com/midas3/api/json?method=midas.slicerpackages.package.list&release=4.8.0<br />
<br />
=== Version NA-MIC data tree ===<br />
<br />
<i>This applies to the Midas instance associated with http://slicer.kitware.com</i><br />
<br />
<br />
<ol start="1" style="list-style-type: decimal;"><br />
<br />
<li><p>If you do not have an account and/or if you do not belong to the <code>DataManager</code> group:</p><br />
<br />
<ul><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 />
</ul></li><br />
<br />
<li><p>Install prerequisites</p><br />
<pre><br />
$ mkvirtualenv -p python2.7 version_namic_datatree<br />
$ pip install pydas<br />
</pre></li><br />
<br />
<li><p>Confirm that the <code>id</code> of the <code>Data</code> folder is still [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 />
MIDAS_EMAIL=<YOUR-MIDAS-LOGIN><br />
MIDAS_API_KEY=<YOUR-MIDAS-APIKEY><br />
DEST_VERSION=X.Y<br />
DATA_FOLDER_ID=301<br />
</pre><br />
<br />
<pre><br />
$ cd /path/to/Slicer/Base/Python/slicer/release<br />
$ python midasdata.py --url=http://slicer.kitware.com/midas3 --data_id=$DATA_FOLDER_ID \<br />
--email=$MIDAS_EMAIL --apikey=$MIDAS_API_KEY --source_version=Nightly --dest_version=$DEST_VERSION --dry-run<br />
</pre><br />
<br />
Example of output:<br />
<pre><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=$MIDAS_EMAIL --apikey=$MIDAS_API_KEY --source_version=Nightly --dest_version=$DEST_VERSION<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 external website ===<br />
<br />
* http://en.wikipedia.org/wiki/3DSlicer<br />
* http://www.nitrc.org/projects/slicer/<br />
<br />
=== Update ExtensionStats extension ===<br />
<br />
Update https://github.com/ihnorton/SlicerDeveloperToolsForExtensions/blob/5ceceabbb3ae35a669309389aa34e596699ca058/ExtensionStats/ExtensionStats.py#L322-L340<br />
<br />
<!--<br />
=== Tag associated projects ===<br />
* Slicer/SlicerExecutionModel<br />
* Slicer/VTK<br />
* Slicer/ITK<br />
* commontk/CTK ?<br />
* commontk/PythonQt ?<br />
--><br />
<br />
== Appendix ==<br />
<br />
=== Sign packages ===<br />
<br />
==== MacOSX ====<br />
As discussed in issue [http://na-mic.org/Bug/view.php?id=3965 #3965], the code signing command is of the form:<br />
<br />
<pre><br />
codesign --deep --force --sign "Developer ID Application: <Name-of-certificate-in-keychain>" ./Slicer.app<br />
</pre><br />
<br />
where the argument to <code>--sign</code> is the name of the developer's certificate in Mac OS X Keychain.app .<br />
<br />
'''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.<br />
<br />
==== Windows ====<br />
<br />
TBD - See [http://na-mic.org/Bug/view.php?id=2697 #2697]<br />
<br />
Also see [[Documentation/Nightly/Developers/Windows_Code_Signing]] for more information.<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 />
<!--<br />
==== Step 5: Create a patch release ====<br />
<br />
{{wip}}<br />
<br />
Slicer trunk: Update Major/Minor/Patch version to match latest release<br />
--><br />
<br />
=== Script to upload Slicer packages ===<br />
<br />
<br />
<pre><br />
File: upload-Slicer-to-slicer-kitware-com.cmake<br />
</pre><br />
<br />
<pre><br />
cmake_minimum_required(VERSION 3.9.0)<br />
<br />
#<br />
# To run this script:<br />
#<br />
# cmake -P upload-Slicer-to-slicer-kitware-com.cmake<br />
#<br />
<br />
#<br />
# Variables to update:<br />
#<br />
# CMAKE_MODULE_PATH<br />
#<br />
# release<br />
# source_revision<br />
# source_checkoutdate<br />
# MIDAS_PACKAGE_EMAIL<br />
# MIDAS_PACKAGE_API_KEY<br />
#<br />
<br />
list(APPEND CMAKE_MODULE_PATH<br />
D:/D/N/Slicer-1/CMake<br />
)<br />
include(MIDASAPIUploadPackage)<br />
<br />
set(operating_system "win") # linux, macosx, win<br />
<br />
set(release "4.8.0")<br />
set(source_revision "26489")<br />
set(source_checkoutdate "2017-10-18 05:11:33")<br />
set(MIDAS_PACKAGE_EMAIL "<YOUR-MIDAS-LOGIN>")<br />
set(MIDAS_PACKAGE_API_KEY "<YOUR-MIDAS-APIKEY>")<br />
<br />
set(ext_linux "tar.gz")<br />
set(ext_macosx "dmg")<br />
set(ext_win "exe")<br />
<br />
set(package_filepath "C:/Users/dashboard/Downloads/Slicer-${release}-${operating_system}-amd64.${ext_${operating_system}}")<br />
<br />
message(STATUS "Upload ${package_filepath}")<br />
<br />
set(MIDAS_PACKAGE_URL http://slicer.kitware.com/midas3) <br />
set(submission_type "experimental")<br />
set(architecture "amd64")<br />
set(package_type "installer")<br />
<br />
midas_api_upload_package(<br />
SERVER_URL ${MIDAS_PACKAGE_URL}<br />
SERVER_EMAIL ${MIDAS_PACKAGE_EMAIL}<br />
SERVER_APIKEY ${MIDAS_PACKAGE_API_KEY}<br />
SUBMISSION_TYPE ${submission_type}<br />
SOURCE_REVISION ${source_revision}<br />
SOURCE_CHECKOUTDATE ${source_checkoutdate}<br />
OPERATING_SYSTEM ${operating_system}<br />
ARCHITECTURE ${architecture}<br />
PACKAGE_FILEPATH ${package_filepath}<br />
PACKAGE_TYPE ${package_type}<br />
RELEASE ${release}<br />
RESULT_VARNAME output<br />
)<br />
set(expected_output "ok")<br />
if(NOT "${output}" STREQUAL "${expected_output}")<br />
message(FATAL_ERROR "Problem with midas_api_upload_package()\n"<br />
"output:${output}\n"<br />
"expected_output:${expected_output}")<br />
endif()<br />
</pre><br />
<br />
<br />
<br />
=== Limitations of download.slicer.org ===<br />
<br />
Considering that <br />
<br />
<p>(1) few minutes after a package is uploaded on http://slicer.kitware.com, it is indexed in the database associated with http://download.slicer.org, and </p><br />
<p>(2) the system indexing the package does <b>NOT</b> rewrite its database entries,</p><br />
<br />
using the [[#Explicit_tagging_of_release_packages|steps below]] will <b>NOT</b> result in an update of the packages reported on http://download.slicer.org.<br />
<br />
<br />
Source code available at https://github.com/mhalle/slicer4-download.<br />
<br />
<br />
<br />
=== Explicit tagging of release packages ===<br />
<br />
Steps:<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 (Keep the default <b>Create a reference to the existing item</b>)<br />
** Identify the item_id associated with uploaded packages. For example: 316530, 316529<br />
** From Kitware internal network, SSH connect to <code>jcfr@slicer.kitware.com</code> (or <code>jcfr@192.168.120.210</code>)<br />
** Connect to mysql<br />
*** <code>password=$(cat /var/www/midas3/core/configs/database.local.ini | grep database.params.password | cut -d"=" -f2 | head -n1 | sed 's/"//g')</code><br />
*** <code>mysql -u midas -p$password -D midas</code><br />
*** See file <code>/var/www/midas3/core/configs/database.local.ini</code> for password<br />
*** Selected database is midas (<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 (316530, 316529);</code><br />
** Set release field<br />
*** <code>update slicerpackages_package set `release`="4.8.0" where item_id in (316530, 316529);</code><br />
<br />
=== User Survey (not used anymore) ===<br />
<br />
See https://docs.google.com/forms/d/1rggxoTV5KL_vt3gX9BNNAcKH4pnL5lkMqPnklOThINg<br />
<br />
With each release, the title of the survey had to be updated.<br />
<br />
Now, the Slicer welcome module has been updated to ask user to report feedback on the Slicer forum</div>
UpdateBot