-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Transitioning Rolling builds to Ubuntu 20.04 (Jammy) #207
Comments
It probably makes sense to disable them and then rename them with a prefix to push into another view. Something like |
Yes. I should have clarified that no matter what we'll be disabling the focal jobs in advance of the Jammy rollout and leaving them disabled until we decide it's time to remove them (most likely in tandem with removing the last rolling binaries from the focal repositories).
We shouldn't rename the jobs themselves otherwise links to the jobs will 404 as Jenkins has no internal redirect handling for renamed jobs. As an extended bummer, many of the links we publish for the buildfarm embed the view in the url rather than linking to the job directly (i.e. |
I just double checked the views and they're implemented as regex filters on the job list. So Rdev is implemented as
This means that when we deploy the Jammy jobs the Rdev view will include both the Jammy and focal jobs unless we modify the view regex. |
I don't think we're doing this anywhere on
I like this in principle, but I really like having a default target. +0 from me.
Not possible, AFAIK.
This is my vote, and if Jenkins gives out, fall back to (5).
I'm OK with this for most of the job types, but the performance/benchmark jobs hold history that we've found useful in the past. If we're copying the history over to the Jammy jobs, then I have no qualms here. This is Rolling, not an LTS release. It comes with the territory. |
Thanks for the feedback Scott. Your comments on 1, 2, and 3 all bear out for me so I don't think any of them are ready options. I think we're going with 4. AKA Fool around and find out. |
When running https://build.ros2.org/job/Rdoc_reconfigure-jobs/11 "obsolete" doc jobs from Ubuntu Focal were automatically deleted. I think we can probably expect the same for dev and pr jobs. A dry run of the Rdev reconfiguration shows that it will do the same https://build.ros2.org/job/Rdev_reconfigure-jobs/788 |
I think this is all done now, so closing out. Feel free to reopen if this is still needed for some reason. |
This is a subset of the greater Rolling transition to 22.04 ros2/ros2#1221
rolling_rosdistro-cache
rolling_failing-jobs
Rci_reconfigure*
Rdev_reconfigure*
Rdev_trigger*
Rdoc_reconfigure*
Rdoc_trigger*
Rrel_*
Rsrc_uF__*
Rbin_uF64__*
Rbin_ufv8_uFv8__*
Rdev__*
Rpr__*
Rdoc__*
Since this will be the first time I've updated the platform of an existing rosdistro there are a few things I'm trying to work out to smooth this out going forward.
The target platform and architecture is embedded into all job names, but is only part of the Jenkins view name for release jobs.
Non-default build files have the build file name embedded in the view but default jobs do not. This means that when we bring up the Jammy source (Rdev) jobs they'll create doubled jobs for everything on the build farm or de-list the old focal jobs. I haven't yet checked how the views are updated to check if the old jobs will just remain or be removed. Since we aren't supporting the focal jobs any more the natural thing to do would be to delete them clearing space for the new jammy jobs. However that also means that we lose the build history of those jobs immediately and there is probably value in having a sunset period where the jobs are disabled but not deleted just like the release jobs will be. The same issue true of Rpr, Rci, and Rdoc jobs.
I see a couple of methods to resolve this:
We could update ros_buildfarm to include a target identifier in all views regardless of job type. I've not yet looked to see how feasible this would be to change. Sometimes ros_buildfarm changes are small thanks to templating and code re-use and sometimes the same function is implemented across several different layers or in python and bash or groovy. This change would also affect all distributions (and ROS 1 distros) not just Rolling which may or may not be desirable.
We could add the Jammy jobs by introducing new non-default targets which would put them in new views based on the build file identifier used in the config index. If we did this I'd suggest that for Rolling we abandon the use of default build files for all build types except release build files where the target is encoded in the view already. This has the benefit of requiring no changes in ros_buildfarm but the downside of creating separate conventions for release build files and every other build file as well as for Rolling compared to every other distribution where there is less of an issue using default build files because the platform list is less likely to change during the life of the distribution.
After updating build files and deploying the new jobs we manually move the focal jobs into manually created views which we can clean up at any later date. This is pretty straightforward to do with a Groovy script or Jenkins configuration UI but it's a chore and will have to be maintained separately.
We could do nothing and let the jobs fall where they will, and see how much, if any trouble the extra jobs give us.
We could delete outright the focal jobs with no sunset period in order to clear the way for the Jammy jobs and not change anything else.
The text was updated successfully, but these errors were encountered: