poughov created page: Help for release actions authored by Victor Poughon's avatar Victor Poughon
This pages sums up technical information to perform the different tasks
from the release process. Action items from the release template 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 http://git@git.orfeo-toolbox.org/git/otb.git 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 convenience, nightly generated source packages should be available
[here](https://www.orfeo-toolbox.org/packages/nightly/latest/).
For more information, check the script `OTB-DevUtils/Scripts/prepareSourcePackagesNightly.sh`, and the command `git archive`.
You will have to copy and rename the release archives into 2 locations:
/var/www/archives/packages
/var/www/archives/packages/archives/OTB
For a release version 3.2.1, the naming convention should follow the
pattern `OTB-3.2.1.[zip/tar.gz/tar.xz]`.
If it is the 2nd release candidate: `OTB-3.2.1-rc2.[zip/tar.gz/tar.xz]`.
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 remain archived in:
/var/www/archives/packages/archives
## Dashboard
A few files need to be updated to make sure the dashboard will be
testing the new release branch:
- [OTB-DevUtils/Config/config\_stable.cmake](https://git.orfeo-toolbox.org/otb-devutils.git/blob/HEAD:/Config/config_stable.cmake)
: update the `OTB_STABLE_VERSION` to new release number
X.Y
- [OTB-DevUtils/Config/windows/nightly.cmake](https://git.orfeo-toolbox.org/otb-devutils.git/blob/HEAD:/Config/windows/nightly.cmake)
: make sure the option `RELEASE_PREPARATION` is ON (windows
platforms will use the release branch to produce packages).
## Spelling check
This is a simple script to run, but it should be run from its directory.
cd OTB/Utilities/Maintenance
./fix_typos.sh
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`
<!-- end list -->
cmake -D OTB_I18N_MERGE_TS:BOOL=ON .
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
<!-- end list -->
cmake -D OTB_I18N_MERGE_TS:BOOL=OFF .
- 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).
<!-- end list -->
linguist i18n/fr_FR.ts
- Finally commit changes made to the TS file.
## 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](https://www.orfeo-toolbox.org/packages/nightly/SuperBuild-archives)
These files should be copied to the OTB website in :
/var/www/archives/packages
**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
:
SuperBuild-archives-MAJOR.MINOR.tar.bz2
SuperBuild-archives-MAJOR.MINOR.md5
If this archive is for develop, use the naming conventions :
SuperBuild-archives-develop.tar.bz2
SuperBuild-archives-develop.md5
### Promote nightly packages
On OTB server, copy standalone packages from
`/var/www/archives/packages/nightly/latest` to 2 locations :
- `/var/www/archives/packages`
- `/var/www/archives/packages/archives/OTB`
You shall copy the following binaries:
- OTB Windows 32bit
- OTB Windows 64bit
- OTB Linux 64bit
- OTB MacOSX 64bit
Then, cleanup in the packages folder if relevant:
- make sure older release and release candidate packages are in
'archives/OTB'
- keep latest release and clean older binaries
### Update documentation
Updating documentation contains multiple steps:
- Software Guide
- Cookbook
- Doxygen
- Application online documentation
#### SoftwareGuide
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 by
symlinks:
cp -R /var/www/archives/packages/nightly/latest/SoftwareGuide-MAJOR.MINOR /var/www/doc
cd /var/www/doc/SoftwareGuide-MAJOR.MINOR
rm index.html
ln -nsf SoftwareGuide.html index.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
#### CookBook
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
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
#### Doxygen
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
The HTML pages for Applications online documentation should be generated
nightly. You should find tarballs of these pages on the server:
/var/www/archives/packages/nightly/latest
If not present, you can generate them with:
python generateAppliDoc.py OTB_BIN_DIR APP_DOC_OUTPUT_DIR
The output directory should be uploaded to the website in :
/var/www/doc/Applications-MAJOR.MINOR
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](https://git.orfeo-toolbox.org/otb-data.git/blob/HEAD:/Examples/QB_Toulouse_Ortho_PAN.tif).
- 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 an issue.