Import and Integrate: Audit and fix gitlab-rails dependencies for Ruby 3.1/3.2
As part of the Audit Gitlab-Rails Dependencies for Ruby 3.1/3.2 Compatibility groupimport and integrate need to assess our areas of responsibility.
see #404750 (closed)
Am running the tests below on sh-test-ruby-3.2
branch locally
Considerations
- We will roll out 3.1 first, but are looking to document both 3.1 and 3.2 issues
- Think about use cases that may not be well-covered with automated tests we already run. An example could be edge cases that only trigger with specific data being used.
- Pay special attention to gems that use C-extensions. These talk to internal MRI APIs that may change across major Ruby releases.
- Browse the gem's issue tracker for any signs of Ruby 3 incompatibilities.
- Check whether the gem is running CI builds against Ruby 3.1/3.2 already.
Group::Import [DEPRECATED] responsibilities
Gems
The Gem Audit Sheet lists the following Gems as the responsibility of the old ~"group::import [DEPRECATED]":
-
graphlient
-
lru_redux
-
ruby-fogbugz
These are Gems we should check in any case as they may impact parts of ~"group::import [DEPRECATED]" code:
- [-]
atlassian-jwt
(bitbucket import?) bitbucket import makes an API call, doesn't use a gem -
bitbucket
bitbucket import makes an API call, doesn't use a gem -
carrierwave
(github import) - [-]
fog-aws
(not applicable to Group::import) -
fog-google
( google code is no longer an import source) -
gitaly
(github import) -
graphql
(the version we use has ruby 3) - [-]
jira-ruby
(not applicable to Group::import) -
oauth2
(github import, bitbucket import?) -
octokit
(github import) -
redis
-
sidekiq
-
snowplow-tracker
this needed updating from0.6.1
to0.8.0
for compatibility with ruby 3.0+. It was updated but check to see if there are new issues.
Specs
-
check BulkImport/GitlabMigration specs -
check ImportExport/FileImport specs -
check QA specs -
Create issues for any breaking specs
Group::Integrations [DEPRECATED] responsibilities
-
asana
Stan has audited it in https://docs.google.com/spreadsheets/d/167KJGE6wTA4euYtYeWqIl8B4BUgmonzajT4gJ14Hh-A/edit#gid=0 -
atlassian-jwt
Manually tested, creating and decoding JWTs -
discordrb-webhooks
Manually tested #409527 (comment 1473565990) -
grape
Manually tested. Version we use appears to have CI for Ruby 3.1 https://github.com/ruby-grape/grape/blob/f5dc7dc5dcbbe2cd43d4ba76cf3f8a788f698bb2/.github/workflows/test.yml -
grape_logging
Manually tested -
grape-swagger
Version we use has passing CI for Ruby 3.2 https://github.com/ruby-grape/grape-swagger/blob/master/.github/workflows/ci.yml -
grape-swagger-entity
Version we use has passing CI for Ruby 3.2 https://github.com/ruby-grape/grape-swagger-entity/blob/master/.github/workflows/test.yml -
grape-entity
Request specs pass, so we must be serializing API entities correctly -
grape-path-helpers
-
graphql
Manually tested, and request specs pass. -
graphiql-rails
Manually tested (GraphiQL works) -
graphql-docs
Manually tested (docs compile) -
hangouts-chat
Manually tested (Google Chat integration works) -
jira-ruby
Manually tested (Jira issues integration works) -
slack-messenger
Manually tested (Slack notifications integration works)
Steps to upgrade Ruby version
- Checkout into to the
ruby3
branch - Install Ruby 3.1.0
asdf install ruby 3.1.0
- Set local ruby version
asdf local ruby 3.1.0
- You may need to
gem install bundler
- You may need to
gem install gitlab-development-kit
-
gdk pristine
(to delete caches etc) gdk reconfigure
gdk restart
Edited by Luke Duncalfe