Skip to content

Upgrade to Ruby 3.3#611

Open
sethboyles wants to merge 1 commit intodevelopfrom
ruby-3.3-upgrade
Open

Upgrade to Ruby 3.3#611
sethboyles wants to merge 1 commit intodevelopfrom
ruby-3.3-upgrade

Conversation

@sethboyles
Copy link
Member

@sethboyles sethboyles commented Feb 4, 2026

In light of the impending Ruby 3.2 EOL (2026-03-31) we need to upgrade Ruby.

Upgrading to Ruby 3.3 is complicated by this Bundler bug: ruby/rubygems#8217, and this PR gets around this bug by using gem fetch bundler -v GEMFILE_LOCK_VERSION in prepackaging and installing from the local bundler gem copy during packaging.

Every jobs which uses the CCNG job will check if the right bundler gem version is installed, and if not, install from the local copy.

(another potential solution is packaging git on the VMs)

I'm putting forth this solution as opposed to upgrading to Ruby 3.4 directly (which would skip the broken Bundler version), as Ruby 3.4 will require more syntax changes and we'd be more at risk of encountering gems that are incompatible with 3.4, notably the unmaintained Fog gems. Compare the Ruby 3.3 changeset to the old Ruby 3.4 changeset from a year ago.

Tasks before this is safe to merge:

Related Issues

cloudfoundry/cloud_controller_ng#4682

@sethboyles sethboyles changed the title Package Ruby 3.3. Upgrade to Ruby 3.3 Feb 4, 2026
@sethboyles sethboyles marked this pull request as draft February 4, 2026 22:19
@sethboyles
Copy link
Member Author

sethboyles commented Feb 5, 2026

✅ fog-local passed units on 3.3:

% git checkout v0.9.0
% bundle exec rake test
export FOG_MOCK=false && bundle exec shindont
not recording test coverage: #<LoadError: cannot load such file -- codeclimate-test-reporter>

  Storage[:local] | directories (local) ++++++++++++++++++++
  Storage[:local] | directory (local) +
  Storage[:local] | file (local) ++++++++++
  Storage[:local] | files (local) +
  Local | storage ++++
  36 succeeded in 0.176605 seconds

@sethboyles
Copy link
Member Author

✅ fog-azure-rm units passed on 3.3:

# Running:

............................................................................................................../Users/sethboyles/.gem/ruby/3.3.7/gems/fog-core-2.6.0/lib/fog/core/attributes/default.rb:59: warning: redefining `object_id' may cause serious problems
.............................................................................................................................................................................................................................................................../Users/sethboyles/workspace/fog-azure-rm/test/requests/traffic_manager/test_list_traffic_manager_profiles.rb:14: warning: DEPRECATED: Use assert_nil if expecting nil. This will fail in Minitest 6.
.....................................................................................................................................................................................................................................................................................................................................................Enum does not contain AccountNameInvalid|AlreadyExists, but was received from the server.
..Enum does not contain AccountNameInvalid|AlreadyExists, but was received from the server.
..........................................................................................................................................................................................................................................................................................................................................

I had to fix the tests for 3.2 while I was at it: fog/fog-azure-rm#447

@sethboyles sethboyles requested review from Gerg and tcdowney February 5, 2026 20:11
@sethboyles
Copy link
Member Author

✅ fog-aws units passed on 3.3:

AWS::Support | describe_trusted_advisor_checks (aws, support) ++  
  AWS | signaturev4 (aws) ++++++++++++++  
  AWS | signed_params (aws) +++  
  AWS Storage | escape (aws) +  
  159 pending and 2572 succeeded in 189.495823 seconds

* prepackage local copy of Bundler gem so we can install it during packaging
@sethboyles sethboyles marked this pull request as ready for review February 11, 2026 16:59
@jochenehret
Copy link
Contributor

jochenehret commented Feb 17, 2026

I tested this capi-release PR on a bbl environment. Test setup:

CATs result:

Summarizing 7 Failures:
  [FAIL] [v3] process instances when stopping the app [It] switches the instances' state from RUNNING to DOWN
  /home/bbl/cf-acceptance-tests/v3/process_instances.go:108
  [FAIL] [apps] loggregator firehose data [It] shows logs and metrics
  /home/bbl/cf-acceptance-tests/apps/loggregator.go:107
  [FAIL] [route_services] Route Services when a route binds to a service when service broker returns a route service url [It] a request to the app is routed through the route service
  /home/bbl/cf-acceptance-tests/route_services/route_services.go:89
  [FAIL] [v3] process instances via different v3 API endpoints [It] returns an array of process instances
  /home/bbl/cf-acceptance-tests/v3/process_instances.go:72
  [FAIL] [apps] Crashing the app crashes [BeforeEach] shows crash events
  /home/bbl/cf-acceptance-tests/apps/crashing.go:112
  [FAIL] [service instance sharing] Service Instance Sharing when User A shares a service instance into User B's space [BeforeEach] allows User A to unshare the service regardless of bindings in target space
  /home/bbl/cf-acceptance-tests/services/service_instance_sharing.go:69
  [FAIL] [HTTP/2 routing] HTTP/2 Routing when a destination serves gRPC [It] successfully routes the gRPC traffic (requires HTTP/2 for all hops)
  /home/bbl/cf-acceptance-tests/http2_routing/http2_routing.go:91

Ran 186 of 279 Specs in 6967.531 seconds
FAIL! -- 179 Passed | 7 Failed | 2 Pending | 91 Skipped


Ginkgo ran 1 suite in 1h56m17.505855088s

BARAs result:

Summarizing 2 Failures:
  [TIMEDOUT] apply_manifest [BeforeEach] Applying a manifest to a single existing app when specifying no-route removes existing routes from the app
  /home/bbl/capi-bara-tests/baras/manifest.go:73
  [TIMEDOUT] TOP-LEVEL [AfterEach] apply_manifest Applying a manifest to a single existing app when routes are specified successfully completes the job
  /home/bbl/capi-bara-tests/bara_suite_test.go:100

Ran 44 of 62 Specs in 3604.794 seconds
FAIL! - Suite Timeout Elapsed -- 42 Passed | 2 Failed | 0 Pending | 18 Skipped


Ginkgo ran 1 suite in 1h0m23.007689655s

So some flakiness as usual, but otherwise everything looks fine!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants