ros2 / ci

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

Add support for multiple versions of RHEL #692

Closed cottsay closed 1 year ago

cottsay commented 1 year ago

This change adds a RHEL version parameter to the CI job infrastructure and updates the RHEL Dockerfile to support RHEL 9.

The changes to the Dockerfile include three packages being downloaded directly from the Fedora build servers while we wait for them to make their way through testing. I see no reason to merge this change prior to that, so I'm opening it as a draft until those packages go stable and we can drop the conditionals.

I have no idea how adding the new Jenkins parameter will impact reruns of existing jobs or the launcher job or anything - I'm not even really sure how to test it. Seeking guidance.

I made all of the conditionals "optimistic", meaning that RHEL versions other than 8 or 9 should take the desired path (i.e. omit workarounds and include more system packages).

RHEL 8 Test CI: Build Status (Same 3 test failures as the nightly build) RHEL 9 Test CI: Build Status (One CMake warning, known issue with RHEL 9)

cottsay commented 1 year ago

For testing it, couldn't we do a deploy to the test buildfarm?

It sounds like that isn't a viable option right now. I deployed to the test_ci_linux-rhel jobs on ci.ros2.org for now. I'll look into adding a test_ci_launcher job to validate that interaction. That should give us sufficient validation coverage.

cottsay commented 1 year ago

As far as validation is concerned, I confirmed that when re-running a build of a job that was executed prior to the introduction of the new parameter, the new parameter value in the rerun takes the default value specified here (so RHEL 8).

Also, specifying the extra parameter in the launcher job doesn't break old child jobs that don't have the new parameter.

tl;dr - Jenkins seems to be doing the "right thing" wherever I check corner cases. I'm not sure what else to try, but I'm open to suggestions.

clalancette commented 1 year ago

tl;dr - Jenkins seems to be doing the "right thing" wherever I check corner cases. I'm not sure what else to try, but I'm open to suggestions.

That sounds like enough validation to me. https://ci.ros2.org gets looked at pretty often, so if we deploy and something goes wrong, we'll notice pretty quickly and can take action.

cottsay commented 1 year ago

I think we should probably wait to merge this until that happens.

Agreed, we should wait. They're both on QA, so it shouldn't be long.

cottsay commented 1 year ago

I think we should probably wait to merge this until that happens.

Agreed, we should wait. They're both on QA, so it shouldn't be long.

This is done - the packages are stable.

Fresh CI: RHEL 8: Build Status RHEL 9: Build Status

cottsay commented 1 year ago

This has been deployed.