From a50951d73a973efddf3079b38a99ded3e885f568 Mon Sep 17 00:00:00 2001
From: Stan Hu <stanhu@gmail.com>
Date: Mon, 6 May 2019 03:35:35 -0700
Subject: [PATCH] Upgrade Ruby version to 2.6.3

Ruby 2.6 offers better performance and memory usage:
https://www.rubyguides.com/2018/11/ruby-2-6-new-features/

Part of https://gitlab.com/gitlab-org/gitlab-ce/issues/57323
---
 .gitlab-ci.yml                                     | 2 +-
 .gitlab/ci/cng.gitlab-ci.yml                       | 2 +-
 .gitlab/ci/frontend.gitlab-ci.yml                  | 2 +-
 .gitlab/ci/global.gitlab-ci.yml                    | 4 ++--
 .gitlab/ci/qa.gitlab-ci.yml                        | 2 +-
 .gitlab/ci/rails.gitlab-ci.yml                     | 7 ++++---
 .gitlab/ci/review.gitlab-ci.yml                    | 2 +-
 .gitlab/ci/test-metadata.gitlab-ci.yml             | 2 +-
 .ruby-version                                      | 2 +-
 changelogs/unreleased/sh-upgrade-ruby-2-6-3-ce.yml | 5 +++++
 doc/ci/caching/index.md                            | 2 +-
 doc/install/installation.md                        | 6 +++---
 doc/update/upgrading_from_source.md                | 6 +++---
 qa/Dockerfile                                      | 2 +-
 14 files changed, 26 insertions(+), 20 deletions(-)
 create mode 100644 changelogs/unreleased/sh-upgrade-ruby-2-6-3-ce.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 44beccd966a61..c971df3ba5fc6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-golang-1.11-git-2.21-chrome-73.0-node-10.x-yarn-1.12-postgresql-9.6-graphicsmagick-1.3.29"
+image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.21-chrome-73.0-node-10.x-yarn-1.12-postgresql-9.6-graphicsmagick-1.3.29"
 
 variables:
   MYSQL_ALLOW_EMPTY_PASSWORD: "1"
diff --git a/.gitlab/ci/cng.gitlab-ci.yml b/.gitlab/ci/cng.gitlab-ci.yml
index c384bcdcdfcd5..d624e8d09f60c 100644
--- a/.gitlab/ci/cng.gitlab-ci.yml
+++ b/.gitlab/ci/cng.gitlab-ci.yml
@@ -1,5 +1,5 @@
 cloud-native-image:
-  image: ruby:2.5-alpine
+  image: ruby:2.6-alpine
   before_script: []
   dependencies: []
   stage: post-test
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index fbf8925e30aa8..986ba7558d5c0 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -16,7 +16,7 @@
 gitlab:assets:compile:
   <<: *assets-compile-cache
   extends: .dedicated-no-docs-pull-cache-job
-  image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-git-2.21-chrome-73.0-node-8.x-yarn-1.12-graphicsmagick-1.3.29-docker-18.06.1
+  image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-git-2.21-chrome-73.0-node-8.x-yarn-1.12-graphicsmagick-1.3.29-docker-18.06.1
   dependencies:
     - setup-test-env
   services:
diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml
index 466c47b37c742..cf87f5eb39c73 100644
--- a/.gitlab/ci/global.gitlab-ci.yml
+++ b/.gitlab/ci/global.gitlab-ci.yml
@@ -9,7 +9,7 @@
     - gitlab-org
 
 .default-cache: &default-cache
-  key: "debian-stretch-ruby-2.5.3-node-10.x"
+  key: "debian-stretch-ruby-2.6.3-node-10.x"
   paths:
     - vendor/ruby
     - .yarn-cache/
@@ -47,7 +47,7 @@
 
 .single-script-job-dedicated-runner:
   extends: .dedicated-runner
-  image: ruby:2.5-alpine
+  image: ruby:2.6-alpine
   stage: test
   cache: {}
   dependencies: []
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index 85c6409186e9c..122ed622ee2c4 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -1,5 +1,5 @@
 package-and-qa:
-  image: ruby:2.5-alpine
+  image: ruby:2.6-alpine
   stage: qa
   when: manual
   before_script: []
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index 35c5f67427e91..29534e40a14ff 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -86,7 +86,7 @@
 .rspec-metadata-pg-10: &rspec-metadata-pg-10
   <<: *rspec-metadata
   <<: *use-pg-10
-  image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-golang-1.11-git-2.21-chrome-73.0-node-10.x-yarn-1.12-postgresql-10-graphicsmagick-1.3.29"
+  image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.21-chrome-73.0-node-10.x-yarn-1.12-postgresql-10-graphicsmagick-1.3.29"
 
 .rspec-metadata-mysql: &rspec-metadata-mysql
   <<: *rspec-metadata
@@ -108,7 +108,8 @@
     - git fetch https://gitlab.com/gitlab-org/gitlab-ce.git v9.3.0
     - git checkout -f FETCH_HEAD
     - sed -i "s/gem 'oj', '~> 2.17.4'//" Gemfile
-    - bundle update google-protobuf grpc
+    - sed -i "s/gem 'bootsnap', '~> 1.0.0'/gem 'bootsnap'/" Gemfile
+    - bundle update google-protobuf grpc bootsnap
     - bundle install $BUNDLE_INSTALL_FLAGS
     - date
     - cp config/gitlab.yml.example config/gitlab.yml
@@ -183,7 +184,7 @@ static-analysis:
   script:
     - scripts/static-analysis
   cache:
-    key: "debian-stretch-ruby-2.5.3-node-10.x-and-rubocop"
+    key: "debian-stretch-ruby-2.6.3-node-10.x-and-rubocop"
     paths:
       - vendor/ruby
       - .yarn-cache/
diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml
index ae16549ef6b1a..3a024c44fe2fc 100644
--- a/.gitlab/ci/review.gitlab-ci.yml
+++ b/.gitlab/ci/review.gitlab-ci.yml
@@ -54,7 +54,7 @@ build-qa-image:
     - time docker push ${QA_IMAGE}
 
 .review-build-cng-base: &review-build-cng-base
-  image: ruby:2.5-alpine
+  image: ruby:2.6-alpine
   stage: test
   when: manual
   before_script:
diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml
index 3ba7af956b56a..4b595083ec6f6 100644
--- a/.gitlab/ci/test-metadata.gitlab-ci.yml
+++ b/.gitlab/ci/test-metadata.gitlab-ci.yml
@@ -56,7 +56,7 @@ update-tests-metadata:
 
 flaky-examples-check:
   extends: .dedicated-runner
-  image: ruby:2.5-alpine
+  image: ruby:2.6-alpine
   services: []
   before_script: []
   variables:
diff --git a/.ruby-version b/.ruby-version
index aedc15bb0c6e2..ec1cf33c3f6e2 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.5.3
+2.6.3
diff --git a/changelogs/unreleased/sh-upgrade-ruby-2-6-3-ce.yml b/changelogs/unreleased/sh-upgrade-ruby-2-6-3-ce.yml
new file mode 100644
index 0000000000000..9ad5c9ebb648d
--- /dev/null
+++ b/changelogs/unreleased/sh-upgrade-ruby-2-6-3-ce.yml
@@ -0,0 +1,5 @@
+---
+title: Upgrade Ruby version to 2.6.3
+merge_request: 28117
+author:
+type: performance
diff --git a/doc/ci/caching/index.md b/doc/ci/caching/index.md
index e079483e2b553..3f72fe3e9ebe5 100644
--- a/doc/ci/caching/index.md
+++ b/doc/ci/caching/index.md
@@ -289,7 +289,7 @@ jobs inherit it. Gems are installed in `vendor/ruby/` and are cached per-branch:
 #
 # https://gitlab.com/gitlab-org/gitlab-ce/tree/master/lib/gitlab/ci/templates/Ruby.gitlab-ci.yml
 #
-image: ruby:2.5
+image: ruby:2.6
 
 # Cache gems in between builds
 cache:
diff --git a/doc/install/installation.md b/doc/install/installation.md
index c694f0ed691e2..f16bc04af343c 100644
--- a/doc/install/installation.md
+++ b/doc/install/installation.md
@@ -163,9 +163,9 @@ Download Ruby and compile it:
 
 ```sh
 mkdir /tmp/ruby && cd /tmp/ruby
-curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz
-echo 'f919a9fbcdb7abecd887157b49833663c5c15fda  ruby-2.5.3.tar.gz' | shasum -c - && tar xzf ruby-2.5.3.tar.gz
-cd ruby-2.5.3
+curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz
+echo '2347ed6ca5490a104ebd5684d2b9b5eefa6cd33c  ruby-2.6.3.tar.gz' | shasum -c - && tar xzf ruby-2.6.3.tar.gz
+cd ruby-2.6.3
 
 ./configure --disable-install-rdoc
 make
diff --git a/doc/update/upgrading_from_source.md b/doc/update/upgrading_from_source.md
index fea896698316b..5118726cb0a6d 100644
--- a/doc/update/upgrading_from_source.md
+++ b/doc/update/upgrading_from_source.md
@@ -52,9 +52,9 @@ Download Ruby and compile it:
 
 ```bash
 mkdir /tmp/ruby && cd /tmp/ruby
-curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz
-echo 'f919a9fbcdb7abecd887157b49833663c5c15fda  ruby-2.5.3.tar.gz' | shasum -c - && tar xzf ruby-2.5.3.tar.gz
-cd ruby-2.5.3
+curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz
+echo '2347ed6ca5490a104ebd5684d2b9b5eefa6cd33c  ruby-2.6.3.tar.gz' | shasum -c - && tar xzf ruby-2.6.3.tar.gz
+cd ruby-2.6.3
 
 ./configure --disable-install-rdoc
 make
diff --git a/qa/Dockerfile b/qa/Dockerfile
index ca7f9accb701c..74be373b8e811 100644
--- a/qa/Dockerfile
+++ b/qa/Dockerfile
@@ -1,4 +1,4 @@
-FROM ruby:2.5-stretch
+FROM ruby:2.6-stretch
 LABEL maintainer "Grzegorz Bizon <grzegorz@gitlab.com>"
 ENV DEBIAN_FRONTEND noninteractive
 
-- 
GitLab