diff --git a/.gitlab/ci/gitlab-gems.gitlab-ci.yml b/.gitlab/ci/gitlab-gems.gitlab-ci.yml
index aa3fff804ba626b2b211a5d250272d34a962ffc8..eb0c8b8536e8de7ff5e736dd6b6241e7e03565bd 100644
--- a/.gitlab/ci/gitlab-gems.gitlab-ci.yml
+++ b/.gitlab/ci/gitlab-gems.gitlab-ci.yml
@@ -5,9 +5,6 @@ include:
   - local: .gitlab/ci/templates/gem.gitlab-ci.yml
     inputs:
       gem_name: "click_house-client"
-  - local: .gitlab/ci/templates/gem.gitlab-ci.yml
-    inputs:
-      gem_name: "error_tracking_open_api"
   - local: .gitlab/ci/templates/gem.gitlab-ci.yml
     inputs:
       gem_name: "gitlab-rspec"
diff --git a/.gitlab/ci/templates/gem.gitlab-ci.yml b/.gitlab/ci/templates/gem.gitlab-ci.yml
index 3e19019a4640dcc7ea750bc266bf11e9de2a7641..46c5e1342c6f5643aa3322d0ee206e00c14d5600 100644
--- a/.gitlab/ci/templates/gem.gitlab-ci.yml
+++ b/.gitlab/ci/templates/gem.gitlab-ci.yml
@@ -15,15 +15,12 @@ spec:
       changes:
         - "$[[inputs.gem_path_prefix]]$[[inputs.gem_name]]/**/*"
         - ".gitlab/ci/gitlab-gems.gitlab-ci.yml"
-        - ".gitlab/ci/vendored-gems.gitlab-ci.yml"
         - ".gitlab/ci/templates/gem.gitlab-ci.yml"
         - "gems/gem.gitlab-ci.yml"
 
 gems $[[inputs.gem_name]]:
   extends: ".gems:rules:$[[inputs.gem_name]]"
   needs: []
-  rules:
-    - exists: ["$[[inputs.gem_path_prefix]]$[[inputs.gem_name]]/.gitlab-ci.yml"]
   trigger:
     include: "$[[inputs.gem_path_prefix]]$[[inputs.gem_name]]/.gitlab-ci.yml"
     strategy: depend
diff --git a/Gemfile b/Gemfile
index e2adb62aab56c93de206c4e7b5d26a66f911970d..1a407cc70209b7334858c69a5321863818c84a1a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -599,7 +599,7 @@ gem 'ed25519', '~> 1.3.0'
 
 # Error Tracking OpenAPI client
 # See https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/rake_tasks.md#update-openapi-client-for-error-tracking-feature
-gem 'error_tracking_open_api', path: 'gems/error_tracking_open_api'
+gem 'error_tracking_open_api', path: 'vendor/gems/error_tracking_open_api'
 
 # Vulnerability advisories
 gem 'cvss-suite', '~> 3.0.1', require: 'cvss_suite'
diff --git a/Gemfile.lock b/Gemfile.lock
index a1e8c0057cd684e1fbf6ba9e0b5f1e4cc1d8a76c..1ba14709bd31b1a4955febcabd7f46832be03a3b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -12,12 +12,6 @@ PATH
       addressable (~> 2.8)
       json (~> 2.6.3)
 
-PATH
-  remote: gems/error_tracking_open_api
-  specs:
-    error_tracking_open_api (1.0.0)
-      typhoeus (~> 1.0, >= 1.0.1)
-
 PATH
   remote: gems/gitlab-rspec
   specs:
@@ -84,6 +78,12 @@ PATH
       devise (~> 4.0)
       devise-two-factor (~> 4.0)
 
+PATH
+  remote: vendor/gems/error_tracking_open_api
+  specs:
+    error_tracking_open_api (1.0.0)
+      typhoeus (~> 1.0, >= 1.0.1)
+
 PATH
   remote: vendor/gems/mail-smtp_pool
   specs:
diff --git a/doc/development/rake_tasks.md b/doc/development/rake_tasks.md
index e8ac8e58dd832843ddcf4c21da9a14ebfc2cb56a..0305cbf25b484f17c0c9a39740afd6691aa81130 100644
--- a/doc/development/rake_tasks.md
+++ b/doc/development/rake_tasks.md
@@ -526,7 +526,7 @@ NOTE:
 This Rake task needs `docker` to be installed.
 
 To update generated code for OpenAPI client located in
-`gems/error_tracking_open_api` run the following commands:
+`vendor/gems/error_tracking_open_api` run the following commands:
 
 ```shell
 # Run rake task
@@ -535,7 +535,7 @@ bundle exec rake gems:error_tracking_open_api:generate
 # Review and test the changes
 
 # Commit the changes
-git commit -m 'Update ErrorTrackingOpenAPI from OpenAPI definition' gems/error_tracking_open_api
+git commit -m 'Update ErrorTrackingOpenAPI from OpenAPI definition' vendor/gems/error_tracking_open_api
 ```
 
 ## Update banned SSH keys
diff --git a/lib/tasks/gems.rake b/lib/tasks/gems.rake
index 0c4cbbfe3f8984892688fa373df271dd74640128..fc70048ea6da59b39a38651a20f5c091fe3cc371 100644
--- a/lib/tasks/gems.rake
+++ b/lib/tasks/gems.rake
@@ -29,7 +29,7 @@ namespace :gems do
     end
 
     def root_directory
-      File.expand_path('../../gems', __dir__)
+      File.expand_path('../../vendor/gems', __dir__)
     end
 
     def generate_gem(vendor_gem_dir:, api_url:, gem_name:, module_name:, docker_image:)
@@ -53,18 +53,14 @@ namespace :gems do
       write_file(gem_dir / 'LICENSE', license)
       write_file(gem_dir / "#{gem_name}.gemspec") do |content|
         replace_string(content, 'Unlicense', 'MIT')
-        replace_string(content, /.*add_development_dependency 'rspec'.*/, '')
         replace_string(content, /(\.files\s*=).*/, '\1 Dir.glob("lib/**/*")')
         replace_string(content, /(\.test_files\s*=).*/, '\1 []')
       end
 
-      # This is gem is supposed to be generated. No developer should change code.
       remove_entry_secure(gem_dir / 'Gemfile')
-      # The generated code doesn't align well with `gitlab-styles` configuration.
       remove_entry_secure(gem_dir / '.rubocop.yml')
       remove_entry_secure(gem_dir / '.travis.yml')
       remove_entry_secure(gem_dir / 'git_push.sh')
-      # The RSpec examples are stubs and have no value.
       remove_entry_secure(gem_dir / 'spec')
       remove_entry_secure(gem_dir / '.rspec')
     end
@@ -82,16 +78,14 @@ namespace :gems do
     end
 
     def readme_banner(task)
+      # rubocop:disable Rails/TimeZone
       <<~BANNER
-        # #{generated_by(task)}
+        # Generated by `rake #{task.name}` on #{Time.now.strftime('%Y-%m-%d')}
 
         See https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/rake_tasks.md#update-openapi-client-for-error-tracking-feature
 
       BANNER
-    end
-
-    def generated_by(task)
-      "Generated by `rake #{task.name}` on #{Time.now.strftime('%Y-%m-%d')}" # rubocop:disable Rails/TimeZone
+      # rubocop:enable Rails/TimeZone
     end
 
     def license
diff --git a/gems/error_tracking_open_api/.gitignore b/vendor/gems/error_tracking_open_api/.gitignore
similarity index 100%
rename from gems/error_tracking_open_api/.gitignore
rename to vendor/gems/error_tracking_open_api/.gitignore
diff --git a/gems/error_tracking_open_api/.openapi-generator-ignore b/vendor/gems/error_tracking_open_api/.openapi-generator-ignore
similarity index 100%
rename from gems/error_tracking_open_api/.openapi-generator-ignore
rename to vendor/gems/error_tracking_open_api/.openapi-generator-ignore
diff --git a/gems/error_tracking_open_api/.openapi-generator/FILES b/vendor/gems/error_tracking_open_api/.openapi-generator/FILES
similarity index 100%
rename from gems/error_tracking_open_api/.openapi-generator/FILES
rename to vendor/gems/error_tracking_open_api/.openapi-generator/FILES
diff --git a/gems/error_tracking_open_api/.openapi-generator/VERSION b/vendor/gems/error_tracking_open_api/.openapi-generator/VERSION
similarity index 100%
rename from gems/error_tracking_open_api/.openapi-generator/VERSION
rename to vendor/gems/error_tracking_open_api/.openapi-generator/VERSION
diff --git a/gems/error_tracking_open_api/LICENSE b/vendor/gems/error_tracking_open_api/LICENSE
similarity index 100%
rename from gems/error_tracking_open_api/LICENSE
rename to vendor/gems/error_tracking_open_api/LICENSE
diff --git a/gems/error_tracking_open_api/README.md b/vendor/gems/error_tracking_open_api/README.md
similarity index 99%
rename from gems/error_tracking_open_api/README.md
rename to vendor/gems/error_tracking_open_api/README.md
index 2b5d66e59c1825a4ebd1d97671bf557d5613b91a..7591f0eb38a0cdcfb782fe120361a574c121fa12 100644
--- a/gems/error_tracking_open_api/README.md
+++ b/vendor/gems/error_tracking_open_api/README.md
@@ -1,4 +1,4 @@
-# Generated by `rake gems:error_tracking_open_api:generate` on 2023-07-13
+# Generated by `rake gems:error_tracking_open_api:generate` on 2023-06-08
 
 See https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/rake_tasks.md#update-openapi-client-for-error-tracking-feature
 
diff --git a/gems/error_tracking_open_api/Rakefile b/vendor/gems/error_tracking_open_api/Rakefile
similarity index 100%
rename from gems/error_tracking_open_api/Rakefile
rename to vendor/gems/error_tracking_open_api/Rakefile
diff --git a/gems/error_tracking_open_api/docs/Error.md b/vendor/gems/error_tracking_open_api/docs/Error.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/Error.md
rename to vendor/gems/error_tracking_open_api/docs/Error.md
diff --git a/gems/error_tracking_open_api/docs/ErrorEvent.md b/vendor/gems/error_tracking_open_api/docs/ErrorEvent.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/ErrorEvent.md
rename to vendor/gems/error_tracking_open_api/docs/ErrorEvent.md
diff --git a/gems/error_tracking_open_api/docs/ErrorStats.md b/vendor/gems/error_tracking_open_api/docs/ErrorStats.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/ErrorStats.md
rename to vendor/gems/error_tracking_open_api/docs/ErrorStats.md
diff --git a/gems/error_tracking_open_api/docs/ErrorUpdatePayload.md b/vendor/gems/error_tracking_open_api/docs/ErrorUpdatePayload.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/ErrorUpdatePayload.md
rename to vendor/gems/error_tracking_open_api/docs/ErrorUpdatePayload.md
diff --git a/gems/error_tracking_open_api/docs/ErrorV2.md b/vendor/gems/error_tracking_open_api/docs/ErrorV2.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/ErrorV2.md
rename to vendor/gems/error_tracking_open_api/docs/ErrorV2.md
diff --git a/gems/error_tracking_open_api/docs/ErrorsApi.md b/vendor/gems/error_tracking_open_api/docs/ErrorsApi.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/ErrorsApi.md
rename to vendor/gems/error_tracking_open_api/docs/ErrorsApi.md
diff --git a/gems/error_tracking_open_api/docs/ErrorsV2Api.md b/vendor/gems/error_tracking_open_api/docs/ErrorsV2Api.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/ErrorsV2Api.md
rename to vendor/gems/error_tracking_open_api/docs/ErrorsV2Api.md
diff --git a/gems/error_tracking_open_api/docs/EventsApi.md b/vendor/gems/error_tracking_open_api/docs/EventsApi.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/EventsApi.md
rename to vendor/gems/error_tracking_open_api/docs/EventsApi.md
diff --git a/gems/error_tracking_open_api/docs/MessageEvent.md b/vendor/gems/error_tracking_open_api/docs/MessageEvent.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/MessageEvent.md
rename to vendor/gems/error_tracking_open_api/docs/MessageEvent.md
diff --git a/gems/error_tracking_open_api/docs/MessagesApi.md b/vendor/gems/error_tracking_open_api/docs/MessagesApi.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/MessagesApi.md
rename to vendor/gems/error_tracking_open_api/docs/MessagesApi.md
diff --git a/gems/error_tracking_open_api/docs/Project.md b/vendor/gems/error_tracking_open_api/docs/Project.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/Project.md
rename to vendor/gems/error_tracking_open_api/docs/Project.md
diff --git a/gems/error_tracking_open_api/docs/ProjectsApi.md b/vendor/gems/error_tracking_open_api/docs/ProjectsApi.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/ProjectsApi.md
rename to vendor/gems/error_tracking_open_api/docs/ProjectsApi.md
diff --git a/gems/error_tracking_open_api/docs/StatsObject.md b/vendor/gems/error_tracking_open_api/docs/StatsObject.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/StatsObject.md
rename to vendor/gems/error_tracking_open_api/docs/StatsObject.md
diff --git a/gems/error_tracking_open_api/docs/StatsObjectGroupInner.md b/vendor/gems/error_tracking_open_api/docs/StatsObjectGroupInner.md
similarity index 100%
rename from gems/error_tracking_open_api/docs/StatsObjectGroupInner.md
rename to vendor/gems/error_tracking_open_api/docs/StatsObjectGroupInner.md
diff --git a/gems/error_tracking_open_api/error_tracking_open_api.gemspec b/vendor/gems/error_tracking_open_api/error_tracking_open_api.gemspec
similarity index 94%
rename from gems/error_tracking_open_api/error_tracking_open_api.gemspec
rename to vendor/gems/error_tracking_open_api/error_tracking_open_api.gemspec
index 405b5ae94c0f5b78b2a5c9bdee3b218154a7d854..1eed64d49adae8da6de18fe74345a90f61e2ec15 100644
--- a/gems/error_tracking_open_api/error_tracking_open_api.gemspec
+++ b/vendor/gems/error_tracking_open_api/error_tracking_open_api.gemspec
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
 
   s.add_runtime_dependency 'typhoeus', '~> 1.0', '>= 1.0.1'
 
-
+  s.add_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'
 
   s.files         = Dir.glob("lib/**/*")
   s.test_files    = []
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_api.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_api.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_api.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_api.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_v2_api.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_v2_api.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_v2_api.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/errors_v2_api.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/api/events_api.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/events_api.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/api/events_api.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/events_api.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/api/messages_api.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/messages_api.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/api/messages_api.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/messages_api.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/api/projects_api.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/projects_api.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/api/projects_api.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api/projects_api.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/api_client.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api_client.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/api_client.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api_client.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/api_error.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api_error.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/api_error.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/api_error.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/configuration.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/configuration.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/configuration.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/configuration.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/error.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_event.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_event.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_event.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_event.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_stats.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_stats.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_stats.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_stats.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_update_payload.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_update_payload.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_update_payload.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_update_payload.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_v2.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_v2.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_v2.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/error_v2.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/message_event.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/message_event.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/message_event.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/message_event.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/project.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/project.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/project.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/project.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object_group_inner.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object_group_inner.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object_group_inner.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/models/stats_object_group_inner.rb
diff --git a/gems/error_tracking_open_api/lib/error_tracking_open_api/version.rb b/vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/version.rb
similarity index 100%
rename from gems/error_tracking_open_api/lib/error_tracking_open_api/version.rb
rename to vendor/gems/error_tracking_open_api/lib/error_tracking_open_api/version.rb