Run a ROS 2 prerelease test locally (without Docker)

1. Create and activate a Python virtual environment

Keep the ROS build farm tools isolated to avoid polluting your system packages.

cd /tmp
python3 -m venv ros_prerelease_env
source ros_prerelease_env/bin/activate

2. Install required Python dependencies

Install the tools necessary for generating and running the prerelease script locally:

pip install -U pip setuptools
pip install ros_buildfarm rosdep rosdistro rosdistro-modules catkin_pkg colcon-common-extensions

These provide:

  • ros_buildfarm → prerelease script generator

  • rosdep / rosdistro → manage ROS dependencies

  • colcon → build and test ROS 2 workspaces

  • catkin_pkg → parse ROS package metadata

3. Generate the prerelease script

Use generate_prerelease_script.py from ros_buildfarm to create a local test script.

generate_prerelease_script.py \
  https://raw.githubusercontent.com/ros2/ros_buildfarm_config/ros2/index.yaml \
  kilted default ubuntu noble amd64 \
  --pkg sick_scan_xd \
  --custom-repo sick_scan_xd:git:https://github.com/SICKAG/sick_scan_xd.git:feature/bloom_prerelease_test \
  --output-dir ./prerelease_kilted_feature_test \
  --no-docker

The --no-docker flag tells the tool to produce a local build script instead of one that uses Docker.

4. Inspect and run the generated script

The command above creates a directory like:

./prerelease_kilted_feature_test/

Inside it, you’ll find:

  • prerelease.sh — the main build/test script configuration files for the ROS 2 build farm environment

Run it directly on your host system:

cd prerelease_kilted_feature_test
./prerelease.sh

If the script is not executable:

chmod +x prerelease.sh
./prerelease.sh

5. What happens during execution

The script performs the following:

  • Creates a temporary ROS 2 workspace.

  • Downloads the specified repositories (using your –custom-repo branch).

  • Runs rosdep install to resolve dependencies.

  • Builds all packages using colcon build.

  • Executes tests via colcon test and reports results.

6. Review results

After the script finishes:

Successful builds will appear as ✅ messages.

Test failures are reported with ❌ and logs stored in log/latest_test/ or build/.

You can inspect them, for example:

colcon test-result --verbose

7. (Optional) Clean up

When done, you can deactivate the environment and remove the temporary test directory:

deactivate
rm -rf /tmp/ros_prerelease_env ./prerelease_kilted_feature_test