You're reading the documentation for a version of ROS 2 that has reached its EOL (end-of-life), and is no longer officially supported. If you want up-to-date information, please have a look at Humble.
How to release
This page tries to capture the process we go through to make a new beta release of ROS 2.
We usually don’t branch before a release but “freeze” the used branch. During the testing phase make sure that no unwanted changes are being committed to that branch. Iteratively test either using the artifacts produced by the packaging jobs or from-source builds and make necessary changes. Once the current state is ready to be released, follow these steps:
Get a fresh copy of all repositories using the master ros2.repos file.
curl https://raw.githubusercontent.com/ros2/ros2/master/ros2.repos | vcs import ./src
Update the version number in (most) packages (excluding the ones which have their own numbering scheme). Also update the version numbers in all python packages that have a setup.py.
Commit and push these changes:
vcs custom ./src --args commit -m "beta N" -a
,vcs custom ./src --args push
Create a
.repos
file with the exact commit hashes you have checked out locally:vcs export --exact ./src > hashes.repos
Tag (most) repositories using
vcstool
.For some repositories we are not creating ROS 2 specific tags but use the hashes instead:
ament/osrf_pycommon
eProsima/Fast-CDR
eProsima/Fast-RTPS
ros/class_loader
ros/console_bridge
Remove the above repositories for now:
rm -fr src/ament/osrf_pycommon src/eProsima src/ros
Note that for this step to work without requiring lots of password typing, you either need a
~/.netrc
file with your credentials, or you need to change the GitHub URLs in the.repos
file to use ssh instead of https.Create the release tag:
vcs custom ./src --args tag release-betaN
(adjust the tag name appropriately).If we ever have something other than
git
repositories we’ll need to use the--git
and--hg
(for example) arguments separately.
Update the
release-latest
tag on all repositories:vcs custom ./src --args tag -f release-latest
Push tags (using force to overwrite existing latest tags):
vcs custom ./src --args push --tags -f
Create new
.repos
file:cp hashes.repos tags.repos
Edit
tags.repos
and replace the version attribute for all repositories (except the ones skipped before) withrelease-betaN
(adjust the tag name appropriately).
Repeat the tagging and
.repos
file generation for the turtlebot2_demo.repos file.At beta3, only the turtlebot2_demo repo had packages that needed their version bumped, and no repos used a fixed hash instead of the release tag.
Run some packaging job using this new
.repos
file.First upload
tags.repos
somewhere (e.g. gist.github.com).Then trigger a packaging job for each platform and use the url of the hosted
.repos
file in theCI_ROS2_REPOS_URL
field.Rename each artifact file (an archive file) as
ros2-beta<beta-number>-package-<platform><rmw-impl>-<opt-arch>.<ext>
.E.g.
ros2-beta2-package-linux-fastrtps-x86_64.tar.bz2
Create a tag on the
ros2/ros2
repository calledrelease-betaN
with the new.repos
file:Clone
ros2/ros2
to the master branch.Replace the
ros2.repos
file’s content with that of thetags.repos
file created above.Commit it with a message like the tag name, e.g.
release-betaN
(adjust the tag name appropriately).Tag it with
git tag release-betaN
(adjust the tag name appropriately) andgit tag -f release-latest
push both withgit push --tags -f
.
Create a new release in the Releases section of
ros2/ros2
using this new tag:Use the title
ROS 2 Beta N release
(matching the style of previous releases).
Upload the renamed artifacts to the Release on GitHub using the web interface:
Create an overview page for the beta release, e.g. https://github.com/ros2/ros2_documentation/Beta2-Overview
Update the releases page to point to it: https://github.com/ros2/ros2_documentation/Releases
Update the Features page if appropriate.
Update the link on the home page: https://github.com/ros2/ros2_documentation/README
Run the documentation generation and upload and link the results from https://docs.ros2.org/
Draft and send an announcement to discourse about that release.