I’m excited to announce the official start of Windows containerized builds on the ROS 2 buildfarm, ci.ros2.org. We have been testing these builds for a couple of months now and have seen improvements in reliability and maintainability over manually provisioned bare-metal instances. ROS 2 itself is reliable in both bare-metal and containerized Windows environments, but executing Jenkins jobs in containerized environments adds many benefits, including:
- Jenkins has a much easier time cleaning up processes and files from each build for a sanitized build and test environment
- Like the Linux docker builds, the Windows dockerfile stays up-to-date with the latest Visual Studio, Qt, and Chocolatey releases to help catch incompatibilities before users find them. (ci #383, rclcpp #963, rclcpp #1000)
- It also provides a self-documenting “how-to install a Windows ROS 2 development environment”
These benefits will lead to a better overall experience for Windows ROS 2 users and developers alike by ensuring ROS 2 is reliably tested through CI on a current Windows environment.
You can find the new dockerfile and an automated Qt installer script at the public ros2 ci repo. The dockerfile has been custom written for ci.ros2.org, but it should provide a good template and launching point for anyone looking to work with their own containerized Windows ROS 2 environments.
We have also taken this opportunity to run these containerized builds from cloud VM instances, which provides further maintainability benefits and provides easy scalability. Now poorly behaving Windows Jenkins agents can be unceremoniously removed from the agent pool (or just restarted).