Skip to content

Release Checklist #14

@ibrahimsel

Description

@ibrahimsel

ROS 2 Release Checklist

Target distros: Humble, Jazzy
Packages: muto_msgs, muto_core, muto_agent, muto_composer, eclipse_muto
Version: 0.42.0


Part 1: Prerequisites

  • Install bloom and catkin-pkg
    sudo apt install python3-bloom python3-catkin-pkg
  • Verify each upstream repo (eclipse-muto/messages, agent, composer, core, eclipse_muto) is public on GitHub
  • Ensure the main branch of each repo has the final, release-ready code

Part 2: Prepare Source Repositories

For each package repo:

  • Generate changelogs
    catkin_generate_changelog --all
  • Edit the generated CHANGELOG.rst files. Document notable changes, keep the "Forthcoming" header
  • Bump the version and create a tag
    catkin_prepare_release --bump minor   # 0.42.0
    This updates package.xml, replaces the changelog heading with the version/date, creates a git tag, and pushes to the remote.
  • Verify the tag exists on GitHub for each repo

Part 3: Release Infrastructure

3.1 Create a release team on ros2-gbp

  • Go to ros2-gbp/ros2-gbp-github-org
  • Open a "New Release Team" issue to create an Eclipse Muto release team
  • List the GitHub usernames of all team members

3.2 Submit source entry PR to ros/rosdistro

  • Fork ros/rosdistro (if not already)
  • Add source entries to humble/distribution.yaml for each repo:
    muto_msgs:
      source:
        type: git
        url: https://github.com/eclipse-muto/messages.git
        version: main
      status: developed
  • Repeat for muto_core, muto_agent, muto_composer, eclipse_muto
  • Repeat in jazzy/distribution.yaml
  • Open PR and wait for it to be merged

3.3 Request release repos on ros2-gbp

  • After the source entry PR is merged, open an "Add New Release Repositories" issue at ros2-gbp/ros2-gbp-github-org
  • Request creation of:
    • ros2-gbp/muto_msgs-release
    • ros2-gbp/muto_core-release
    • ros2-gbp/muto_agent-release
    • ros2-gbp/muto_composer-release
    • ros2-gbp/eclipse_muto-release
  • Wait for repos to be created

3.4 Set up GitHub token for bloom

  • Create a GitHub Personal Access Token (classic) with public_repo and workflow scopes
  • Save to ~/.config/bloom:
    {
       "github_user": "<your-username>",
       "oauth_token": "<your-token>"
    }
  • Add credential helper to ~/.gitconfig:
    [credential "https://github.com/ros2-gbp"]
        username = x-access-token
        helper = "!f() { test \"$1\" = get && echo \"password=<your-token>\"; }; f"

Part 4: Run bloom-release

4.1 Release for Humble

  • bloom-release --new-track --rosdistro humble --track humble muto_msgs
  • bloom-release --new-track --rosdistro humble --track humble muto_core
  • bloom-release --new-track --rosdistro humble --track humble muto_agent
  • bloom-release --new-track --rosdistro humble --track humble muto_composer
  • bloom-release --new-track --rosdistro humble --track humble eclipse_muto

--new-track is only needed for the first release. Bloom will prompt for the upstream repo URL, branch, etc.

4.2 Release for Jazzy

  • bloom-release --new-track --rosdistro jazzy --track jazzy muto_msgs
  • bloom-release --new-track --rosdistro jazzy --track jazzy muto_core
  • bloom-release --new-track --rosdistro jazzy --track jazzy muto_agent
  • bloom-release --new-track --rosdistro jazzy --track jazzy muto_composer
  • bloom-release --new-track --rosdistro jazzy --track jazzy eclipse_muto

Part 5: Post-Release

  • Verify bloom auto-created PRs against ros/rosdistro with the release entries
  • Wait for rosdistro maintainer review
  • After merge, monitor the ROS buildfarm for build status
  • Confirm packages appear in ros-testing (should be 24–48 hours after merge)
  • Confirm packages are synced to the main packages.ros.org repo (next sync cycle, should be every 2–4 weeks)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions