Ruby 2.7: Moving RPM deployments to Ruby 2.7

This plugin has been discontinued and can be dropped from packaging by now

Thanks. I opened a PR to do so ā€“ Update rubygem-foreman_docker spec by ehelms Ā· Pull Request #6439 Ā· theforeman/foreman-packaging Ā· GitHub
This has a cascade effect of needing to clean up some loose ends in hammer_cli_katello

Yeah, Avi has been saying that builder/vendor has been rather stable in terms of API and weā€™ve not seen plugins fail to build when theyā€™d specify ^5 or similar as dep but being built with a much newer version.

That said, itā€™d be nice if the upper bound would be defined in the plugin more correctly (so >=5, if we donā€™t know which version will break, but are rather sure 6 or 8 isnā€™t) or, even better, if builder/vendor wouldnā€™t bump major version so often. My understanding is that you currently bump all packages simultaneously, and thatā€™s what trigger major bumps even if the breaking changes donā€™t affect builder/vendor.

1 Like

Iā€™ll take care of foreman_leapp

It seems that the fact we use Lerna to do releases of all modules concurrently actually breaks sevmer for the specific modules - e.g. builder didnā€™t have any breaking changes but bumps major version due to breaking change in vendor. This causes such issues since we canā€™t actually rely on the version numbers so either we bump versions for no reason or remove the version limits and risk breaking when an actual breaking change is merged. Perhaps something that should be discussed at the next @ui_ux interest group meeting.

1 Like

You mean like it was discussed in

? :wink:

1 Like

I had a feeling weā€™ve been in this discussion already :laughing: @John_Mitsch did we ever do anything about switching lerna to independent mode instead of fixed mode?

2 Likes

Yesterday on the foreman-js maintainers meeting, we discussed about that too,
and thought that itā€™s worth to explore if we can use lerna with different packages major versions ,
also for builder, itā€™s worth checking if we can import it once somewhere in Foreman core and remove the duplication across pluginsā€¦ but we can talk all about that after @sharvit deep dive about the builder in the next UX interested group

For now, I think that doing something like @theforeman/builder: >= 8.3.3 in plugins package.json should resolve our current issue

1 Like

Couple of updates. I have PRs open to drop foreman-docker and fix foreman_datacenter:

I have moved it to the RFC category.

This is also relevant:

I have missed this thread. Discovery is done, webhooks is currently pending a PR:

https://github.com/theforeman/foreman-packaging/pull/6489

I want to backport this version into 2.4 repository, will this change work or do I need to avoid this hunk?

There are a few outstanding plugins that need updating to be able to build but given that condition exists even prior to Ruby 2.7 I would like to move forward with building against Ruby 2.7. All package updates that are the result of testing and were stand-alone have been merged and I am down to the rebuild point. You can see that by what is linked to the milestone.

The rebuild is a large effort, 2-4 days of building, and then testing and getting pipelines passing. This is unfortunately a disruptive change for building and pipelines but I aim to minimize it as much as possible by maximizing the build throughput across those days.

I would like to target this week (29/3/2021 - 2/4/2021) or next week (5/4/2021 - 9/4/2021) to iterate through the building.

1 Like

I am planning to start this process on Monday the 4th of April working in conjunction with @pcreech. Given the holidays in some areas on Monday, I am hoping to use this quieter period to get through the bulk of builds and ultimately reduce disruptions. This will lead to outages in our pipelines as we churn through the build process. Between the two of us the hope is to limit this to 2-3 days max.

Building of Ruby 2.7 packages is nearly complete. I should be able to resolve everything on Wednesday as I am down to just re-building Foreman plugin packages. There are still some plugin packages that are unbuildable as noted previously in the thread.

The Foreman pipeline has passed on EL7 thus far, with a change needed for EL8 to handle the switch in modularity streams for our pipelines:

https://github.com/theforeman/forklift/pull/1332

This same change will be applied to our upgrade documentation for Foreman and Katello once I have completed the RPM building and testing.

1 Like

RPM builds have ā€œcompletedā€ for everything that is known. A reminder the following plugins could not be built and will remain out of date until they are updated:

  • foreman_azure_rm
  • foreman_statistics
  • foreman_templates
  • foreman_puppet
  • foreman_discovery

Testing of the builds continues with passing install tests for Foreman on EL7 and EL8 now. Upgrades for EL7 are being worked on as we currently test that no rh-ruby25 packages are needed and we need to update our pipelines to remove those packages as a user would and ensure things continue to work.

The proposed change to fix our nightly pipelines and mimic a user action:

https://github.com/theforeman/forklift/pull/1334

The Foreman nightly pipeline is officially green. Be warned that that means the Foreman packages in nightly release repositories are all Ruby 2.7 based but Katelloā€™s pipeline is now running.

The same is true for plugins. The nightly repository is 95% updated with plugins and dependencies based around Ruby 2.7 but there are some plugins (as previously noted) that are outdated and can cause problems. Any help by maintainers reading this to update your plugins would be appreciated. I will work to contact and get updates.

2 Likes

I have updated the last four plugins that were not rebuilt because they depended on older @theforeman/builder:

https://github.com/theforeman/foreman-packaging/pull/6546

make it three, foreman_templates still doesnā€™t build :angry: