Delivery: Ruby 3.3 rollout to .com and self-managed
### Context [Ruby 3.3 was released on Dec 2023](https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/). Ruby 3.2, which is what we are running now will reach [EOL on 31 Mar 2026](https://endoflife.date/ruby). To maintain an up-to-date product and platform for Self Managed customers and GitLab.com we must periodically update our Ruby runtimes to offer a product within the support windows of the language. ### Problem statement We are in the process of [upgrading to Ruby 3.3](https://gitlab.com/groups/gitlab-org/-/epics/12350). Upgrading Ruby versions is usually risky since it impacts every part of the build/package pipeline, deployment process and production. Since we don't have an easy way for teams to test risky changes such as this, Delivery needs to prepare to carefully deploy this change in isolation to test environments and later to production and self-managed. This epic is to capture the Delivery team effort to upgrade gitlab.com to Ruby 3.3 and release a self-managed package containing Ruby 3.3. - **Date for self-managed release**: 2026-02-19 - **Dates for gitlab.com release**: 2026-01-22 ### Useful links - Main Ruby 3.3 rollout epic: https://gitlab.com/groups/gitlab-org/-/epics/12350 - Distribution Ruby 3.3 epic: https://gitlab.com/groups/gitlab-org/-/epics/17092 - Documentation for performing ruby upgrades: https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/ruby-upgrades.md #### Previous Ruby upgrade issues and epics - Ruby 3.2 upgrade (previous Ruby upgrade) Delivery epic: https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/1377 - Ruby 3.1 upgrade Delivery epic: https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/1128 - Ruby 3 upgrade Delivery epic: https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/865 - Ruby 3 upgrade rollout retrospective: https://gitlab.com/gl-retrospectives/enablement-section/application-performance-team/-/issues/59 ### Prerequisites The following acts as a checklist to be done before [Release & Deploy group](https://handbook.gitlab.com/handbook/engineering/infrastructure-platforms/gitlab-delivery/delivery/) get involved. Please add this list to the epic we will create in the next step to clarify related works. <table> <tr> <th>Status</th> <th>Task</th> <th>Related work</th> </tr> <tr> <td> :white_check_mark: </td> <td> The Ruby upgrade work starts with an epic in the `gitlab-org` group created by the manager in the Ruby upgrade group. </td> <td> https://gitlab.com/groups/gitlab-org/-/epics/12350 </td> </tr> <tr> <td> :white_check_mark: </td> <td>Gems in GitLab Rails are audited to see if they are all compatible with the new Ruby version.</td> <td> https://gitlab.com/groups/gitlab-org/-/epics/18009 Base on the discussion in https://gitlab.com/groups/gitlab-org/-/epics/18009#note_2652454569, this item seems to be considered done. </td> </tr> <tr> <td> :white_check_mark: </td> <td> Scheduled pipelines in `gitlab-org/gitlab` run against master with the new Ruby version. </td> <td> https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177504 </td> </tr> <tr> <td> :white_check_mark: </td> <td> Developer Experience team updates MR pipelines in `gitlab-org/gitlab` to use the new Ruby version. </td> <td> https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177504 </td> </tr> <tr> <td> :white_check_mark: </td> <td> At the same time, Distribution starts doing the following. - Support building packages containing new Ruby version. - Switch feature branch builds to new Ruby version. - Switch nightly builds to use the new Ruby version. This is usually done after the gem audit is complete. </td> <td> https://gitlab.com/groups/gitlab-org/-/epics/17092 </td> </tr> </table> After this, [Release & Deploy group](https://handbook.gitlab.com/handbook/engineering/infrastructure-platforms/gitlab-delivery/delivery/) can start our work. ### DRI @dat.tang.gitlab ### Exit criteria * [x] Ruby 3.3 is tested on canary stage https://gitlab.com/gitlab-com/gl-infra/production/-/issues/20918 * [x] GitLab.com is running on Ruby 3.3 https://gitlab.com/gitlab-com/gl-infra/production/-/work_items/21065 * [x] Self-managed GitLab packages are running on Ruby 3.3 https://gitlab.com/gitlab-com/gl-infra/delivery/-/issues/21670 ### Epic admin ``` /epic &1698 /label ~"group::delivery" ~"Delivery::P3" ~"release" ~"workflow-infra::Triage" ``` ## Status Notes <!-- STATUS NOTE START --> ## Status 2026-02-19 :clock1: **total hours spent this week by all contributors**: 4h :tada: **achievements**: * Build team has _merged_ Ruby 3.3 for Omnibus & CNG. (https://gitlab.com/groups/gitlab-org/-/work_items/17092+) * We confirmed that GitLab 18.9.0 is built with Ruby 3.3.10 :rocket: https://gitlab.com/gitlab-com/gl-infra/delivery/-/issues/21670 :arrow_forward: **next**: * This Epic is done :white_check_mark: . We can close it. _Copied from https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/1698#note_3098724286_ <!-- STATUS NOTE END -->
epic