Help for release actions

From OTBWiki
Revision as of 11:19, 14 February 2017 by Gpasero (Talk | contribs) (Merge latest release into master)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This pages sums up technical information to perform the different tasks from the release process. Action items from the How to Release page link here. In the following sections, the release will have the generic name : MAJOR.MINOR.PATCH. Each number shall be replaced by the current release number.

Git commands

Create release branch

git checkout -b release-MAJOR-MINOR develop
git push origin release-MAJOR.MINOR

RC tag

git checkout release-X.Y
git tag -a MAJOR.MINOR.PATCH-rc1 -m "Release Candidate tag MAJOR.MINOR.PATCH-rc1"
git push --tags origin release-X.Y

Get a RC checkout

Send the command to get a RC checkout in the announcement email, so that more users try it.

git clone OTB
cd OTB
git checkout -q --detach MAJOR.MINOR.PATCH-rc1

Release tag

For sources with 'otb' workflow (OTB, OTB-Data), tag the release branch:

git checkout release-X.Y
git tag -a MAJOR.MINOR.PATCH -m "Release tag MAJOR.MINOR.PATCH"
git push --tags

For sources without workflow (OTB-Documents, OTB-DevUtils), tag master:

git checkout master
git tag -a MAJOR.MINOR.PATCH -m "Release tag MAJOR.MINOR.PATCH"
git push --tags

Merge latest release into master

For both OTB and OTB-Data:

git checkout master
git merge release-X.Y
git push

Prepare and upload source packages

For both OTB and Monteverdi:

Use OTB-DevUtils/Scripts/ Ensure you named the zipped files with the same convention as the previous release. OTB, Monteverdi2, Ice:

git archive --format=tgz -o ../OTB-5.2.0-rc1.tgz --prefix=OTB-5.2.0/ 5.2.0-rc1
git archive --format=zip -o ../ --prefix=OTB-5.2.0/ 5.2.0-rc1

Sources packages that are released should be uploaded to the website in:


The management of older versions is done during the release process, so that at each time there is at least one stable release (non RC) in the packages directory. Older versions shall be archived in :


Spelling check

This is a simple script to run, but it should be run from its directory.

cd OTB/Utilities/Maintenance

The tool (based on codespell) will identify potential spelling errors and suggest a replacement. The user accepts or refuses those changes (Y/n).

Translation for Monteverdi & Mapla

The translation is done using Qt tools. The strings to translate have a special definition in the source code. Qt tools such as lupdate or lrelease can parse and register them in a .ts file. This file is the source file for translation, it contains original strings and their translation. There is one .ts for each translation language. Currently, OTB only has a french translation file : i18n/fr_FR.ts. To parse again all the strings in source code and update the ts file, you should :

  • Go to a build directory of OTB with Monteverdi and Mapla enabled.
  • Enable the option OTB_I18N_MERGE_TS and build the target i18n
make i18n

It will update the ts file with the new strings detected. Take caution because when OTB_I18N_MERGE_TS is ON, the call to make clean will remove the TS file.

  • Disable OTB_I18N_MERGE_TS for safety and faster build
  • Go to the corresponding OTB source directory
  • Add a translation for strings that don't have any, using a text editor or linguist tool. Beware, the translation of the keymap is a bit tricky (html formatted bloc).
linguist i18n/fr_FR.ts
  • Finally commit changes made to the TS file.

Mantis bug report

  • Select all projects in the combobox : Orfeo Toolbox (OTB)
  • Use Advanced Filters
  • Set "Use Date" and "Resolution" filters to catch bugs solved between last release and today
  • Export in cvs format
  • Use from OTB-DevUtils/Scripts
  • Copy/paste the result in the release notes


Upload to Sourceforge (see :

  • tsocks ssh -t yoursourceforgeuser, create
  • then you can ssh/scp/etc to this shell
  • type sf-help to know where the files dir are located
  • Notes :
    • tsocks ssh -t yoursourceforgeuser, create
    • then you can ssh/scp/etc to this shell
    • type sf-help to know where the files dir are located
  • Upload the source packages (OTB, Monteverdi2)
  • Upload Software pdf and html.tar.gz Guide on sourceforge
  • Upload Cookbook pdf and html.tar.gz on sourceforge
  • Upload FAQ pdf and html.tar.gz on sourceforge
  • Upload binary packages:
    • OTB (MinGW)
    • Monteverdi2-windows-32bit (from OTB server)
    • Monteverdi2-windows-64bit (from OTB server)
    • Monteverdi2-MacOS
  • Clean up sourceforge project dir
  • Update platform-specific links in sourceforge Files page

OTB website

The resources for OTB website are placed in separate folders :

  • /var/www/doc  : all resources for documentation
  • /var/www/archives : storage for source code, binary packages, and other archives
  • /var/www/wordpress-4.0 : website architecture

A lot of resources are accessed with symlinks. The advised command to define a symlink is :

ln -nsf  target_file  link_name

SuperBuild archive

The SuperBuild archive is an all-in-one archive with the sources of the different projects compiled by the SuperBuild. The versions of these projects may vary between 2 releases, so the release number should be visible on this archive. The MD5 sum of the archive is also supplied. Since it is a large archive, users may need to check the download was successful. The archives for the develop branch and the latest release branch are produced nightly and available on the website : [1]

These files should be copied to the OTB website in :


For manual generation

Both archive and md5 sum can also be generated from a CMake target in OTB project :

make SuperBuild-archive

This command will try to download all sources in OTB_BINARY_DIR/Download, and produce the output files in OTB_BINARY_DIR. It will also report dead links.

If this archive is for a particular release, use the naming conventions :


If this archive is for trunk, use the naming conventions :


Promote nightly packages

On OTB server, copy standalone packages from /var/www/archives/packages/nightly/latest to /var/www/archives/packages:

  • OTB Windows 32bit
  • OTB Windows 64bit
  • OTB Linux 64bit
  • OTB MacOSX 64bit
  • Cleanup in the packages if relevant (keep new release, put release candidate packages in 'archives')

Update documentation

Updating documentation contains multiple steps:

  • Software Guide
  • Cookbook
  • Doxygen
  • Application online documentation


The SoftwareGuide is generated nightly. The PDF and tar.gz archive should be copied in /var/www/archives/packages. The online html version shall be deployed in /var/www/doc/SoftwareGuide-MAJOR.MINOR. In this folder, you have to replace the files index.hml and FAQ.html by symlinks. The FAQ symlink should point to the FAQ chapter of the SoftwareGuide:

cp -R /var/www/archives/packages/nightly/latest/SoftwareGuide-MAJOR.MINOR /var/www/doc
cd /var/www/doc/SoftwareGuide-MAJOR.MINOR
rm index.html FAQ.html
ln -nsf SoftwareGuide.html index.html
ln -nsf `grep -rl "<head><title>[0-9]* Frequently Asked Questions</title>" .` FAQ.html

The symlinks in /var/www/wordpress-4.0 have to be updated :

cd /var/www/wordref-4.0
ln -nsf ../doc/SoftwareGuide-MAJOR.MINOR SoftwareGuide-MAJOR.MINOR
ln -nsf SoftwareGuide-MAJOR.MINOR SoftwareGuide


The CookBook is generated nightly. The PDF and tar.gz archive should be copied in: /var/www/archives/packages. The online html version shall be deployed in /var/www/doc/CookBook-MAJOR.MINOR. In this folder you have to replace index.html by a symlink:

cp -R /var/www/doc/packages/nightly/latest/CookBook-MAJOR.MINOR /var/www/doc
cd /var/www/doc/CookBook-MAJOR.MINOR
rm index.html
ln -nsf CookBook.html index.html

The symlinks in /var/www/wordpress-4.0 have to be updated :

cd /var/www/wordpress-4.0
ln -nsf /var/www/doc/CookBook-MAJOR.MINOR CookBook-MAJOR.MINOR
ln -nsf CookBook-MAJOR.MINOR CookBook


The doxygen is generated weekly. The current doxygen should be copied to /var/www/doc:

cd /var/www/doc
cp -r /home/otbbot/doxygen/doxygen-current doxygen-MAJOR.MINOR

The symlinks in /var/www/wordpress-4.0 have to be updated:

cd /var/www/wordref-4.0
ln -nsf ../doc/doxygen-MAJOR.MINOR doxygen-MAJOR.MINOR
ln -nsf doxygen-MAJOR.MINOR doxygen

Application online documentation

To generate the html pages :


The output directory should be uploaded to the website in :


The symlinks in /var/www/wordpress-4.0 should be updated :

Applications-MAJOR.MINOR  ->  /var/www/doc/Applications-MAJOR.MINOR
Applications              ->  Applications-MAJOR.MINOR

Wordpress content update

After a release, the "Download" page should be updated. This page can be edited from the wordpress admin interface (look for Pages -> Download).

The front page of the website should also be updated with the last released version and the date. From the wordpress admin interface, look for Pages -> "Open Source processing of remote sensing images - Front Page".

Note : In a different version of wordpress, the front page buttons were edited through "Appearance" -> "Theme Options" -> "Header One Settings".

Standalone packages sanity check

Manually check that the packages that are about to be released as the next OTB version are working. For a given platform, do the following:

  • Identify the exact file about to be released
  • Download that file
  • Follow word-for-word the official installation procedure from the Cookbook
  • Open Monteverdi
    • Activate Help/About... dialog and check version number
    • Open this .tif image.
    • Navigate in the image briefly: translate, zoom, use the quicklook window
    • Load OTB applications
    • Open the 'Image conversion' (otbgui_Convert) application and run it on the loaded image (pick random parameters)
    • Check french translation (i18n)

If there is any problem, crash or suspicious behavior when doing the above, open a mantis issue and notify otb-developers immediately.