ros2 / ci

ROS 2 CI Infrastructure
http://ci.ros2.org/
Apache License 2.0
48 stars 30 forks source link

Pin all versions of python dependencies. #759

Open clalancette opened 4 months ago

clalancette commented 4 months ago

This allows us to be in control of our destiny, and not have random python upstream package updates destroy the entire buildfarm.

We accomplish this through 3 different mechanisms, depending on the platform:

  1. Ubuntu - we install everything from debian packages, and nothing from pip. Because Ubuntu promises to not to breaking changes within a distribution, this guarantees we won't break. This also serves as our canonical version of what should work.
  2. RHEL - For RHEL-9, we install everything from RPM packages, and nothing from pip. For RHEL-8, we install most everything from RPM packages, with the exception of mypy, pytest, and pytest-rerunfailures. Since RHEL/EPEL typically doesn't update major versions within a release, we typically won't break.
  3. Windows - We install all python packages via pip, and we constrain the versions we install to those in Ubuntu. This means that we'll always match what works on Ubuntu and we should always work.

Still a draft, as I need to run CI here and see what happens.

clalancette commented 4 months ago

Initial CI:

clalancette commented 4 months ago

Note that this needs https://github.com/ros-infrastructure/ros2-cookbooks/pull/66 as well.

clalancette commented 4 months ago

Here's additional CI:

claraberendsen commented 4 months ago

Re-running CI on windows with the latest changes as sanity check: Build Status