-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Release Procedure
Olivier Michel edited this page Jan 25, 2022
·
96 revisions
- Nominate a Release Leader, this leader should:
- Make sure to understand the availabilities of everyone for the release.
- Create the Github milestone for the next release.
- Assign remaining issues.
- Assign testing OS for the QA tests.
- Create the QA as a google docs spreadsheet based on this template
- Make sure that everything is ready before the actual release (blog post [major releases only], announcement, etc.).
- Know during the whole release process at any time who is doing what.
- At least every day:
- Check the progress of everyone.
- Report overall release status to the whole team.
- Re-assign remaining issues depending on progress.
- [major releases only] Write a blog post announcing the new release, see this example, the newsletter and twitter/Discord/etc. announcement.
- Make sure that all the remaining issues corresponding to the release milestone are well sorted according to these rules:
- Regressions and other important issues such as crashes should be fixed for the next release.
- Depending on the urgency to release, eventually postpone the other issues and create new milestones.
- Update the doc:
- First update the URL with
./scripts/packaging/update_worlds_and_protos.py <version>
- Regenerate thumbnails with
docs/generate_thumbnails.py
- Regenerate objects documentation with
docs/guide/generate_objects_doc.py
- First update the URL with
-
[major releases only] Update all the worlds using
scripts/packaging/update_all_worlds.py
. - Make sure no released worlds produce unwanted warning by running the
tests/manual_tests/test_worlds_warnings.py
script (may take a long time). - If new robots/simulations are available, eventually improve the guided tour.
-
while (issues are reported)
- Fix every remaining issues having the corresponding milestone (eventually postpone the resolution of minor and the non-regressions issues)
- Sort ChangeLog entries in order of importance.
- Create and merge a PR:
- to regenerate the automatically generated files (doc and translation files). Type
make clean
andmake update
in theresources/translations
folder. - to update the release date in the change log
- [optional]: run scripts/new_version/new_version_file_headers.sh to make sure that all the WBT, WBO, and PROTO headers are up-to-date with the current version
- [optional]: upload the
webots/resources/web/wwi
files to https://cyberbotics.com/wwi/R2021a/ (replace R2021a with the actual release).
- to regenerate the automatically generated files (doc and translation files). Type
- Create the package (cf. section below) and share it with testers.
- Perform the QA test preferably on a clean computer.
Merge the release branch with master branch. Then, create a tag with the last commit on the Webots repository. Example:
cd ~/develop/webots
git checkout master
git pull origin master
git tag -a R2021a -m "Webots R2021a"
git push origin R2021a
GitHub Actions will then create the packages and upload them to a new release. Alternatively, you can create the package yourself:
cd ~/webots
make clean
make distrib -jX
# the package is generated into `~/distribution/`.
The tag should be created on the webots-snap and webots-docker repositories too, this will create the corresponding packages.
- Upload all the installer files to a GitHub release (if not done by GitHub Actions).
- Update Cyberbotics's web site:
webots_current_version.txt
- Publish the snap package on the release channel on snapcraft.io following these instructions.
- Update the
debian
repository on cyberbotics.com/debian from a Linux machine, check Cyberbotics passwords for the GPG passphrase, do not upload the big.deb
file to cyberbotics.com/debian/binary-amd64
mkdir debian
cd debian
mkdir binary-amd64
cd binary-amd64
wget https://github.com/cyberbotics/webots/releases/download/R2021a/webots_2021a_amd64.deb
cd ..
apt-ftparchive packages binary-amd64 > binary-amd64/Packages
cd binary-amd64
gzip -c Packages > Packages.gz
bzip2 -c Packages > Packages.bz2
echo "Archive: stable" > Release
echo "Component: main" >> Release
echo "Origin: Cyberbotics Ltd." >> Release
echo "Label: Cyberbotics Ltd. Debian repository" >> Release
echo "Architecture: amd64" >> Release
echo "Codename: binary-amd64" >> Release
apt-ftparchive release . >> Release
rm -f Release.gpg
gpg -abs --batch --passphrase-file ~/.gnupg/passphrase.txt -o Release.gpg Release
gpg --clearsign --output InRelease Release
- Switch the Github tag from
draft
torelease
. - Close the corresponding Github milestone.
- Announce the release on Twitter/Discord/LinkedIn/HackerNews/Reddit/Email
- Announce the release privately to the users waiting for it.
- Update Wikipedia (at least the release): https://en.wikipedia.org/wiki/Webots
- Update the version on the
webots
repo. - In
master
update the urls that are not updated byscripts/new_version/new_version.sh
(commented files). - Update the other repos:
- https://github.com/cyberbotics/webots_ros
-
https://github.com/cyberbotics/webots_ros2 (In the
develop
branch: update the libcontroller in thewebots
folder inside webots_ros2_driver to the new version and update the tag for the CI tests on master and develop) - https://github.com/cyberbotics/urdf2webots (major releases only: the header line of the proto files should refer to the new version of Webots, create a new release with a new tag will publish the updated pip package)
- https://github.com/cyberbotics/webots-snap
- https://github.com/cyberbotics/webots-docker (several references to the current version)
- https://github.com/cyberbotics/webots-projects: add release tag
- https://github.com/Homebrew/homebrew-cask/blob/master/Casks/webots.rb#L2-L3
- Update the online demos to work with the new version:
[major releases only]:
- Announce the release on the robotics-worldwide and euron-dist mailing lists.
- Announce the release on the blog.
- Announce the release on the newsletter.