Ruby 3.2 contains a number of kwargs fixes, and Rails 7 may be a
prerequisite for Ruby 3.2. We'll want to test and deploy Ruby 3.1
before jumping to 3.2.
Ruby 3.1 requires at least rubygems v3.1.3. Let's just bump
everything to 3.4, and consolidate the Ruby 3.2 build.
Previously we had to remember to apply specific patches for each
version of Ruby, and it was easy to forget. Let's just simplify this
by applying patches for the major and minor versions (e.g. 2.7, 3.0,
etc.).
Currently the `gsutil rsync` command does not support the `-z` or `-Z`
options available in `gsutil cp` to compress files locally via gzip
before uploading
(https://github.com/GoogleCloudPlatform/gsutil/issues/579). As
https://cloud.google.com/storage/docs/gsutil/commands/cp states:
When you specify the -z option, the data from your files is
compressed before it is uploaded, but your actual files are left
uncompressed on the local disk. The uploaded objects retain the
Content-Type and name of the original files, but have their
Content-Encoding metadata set to gzip to indicate that the object data
stored are compressed on the Cloud Storage servers and have their
Cache-Control metadata set to no-transform.
about.gitlab.com is currently serving uncompressed HTML files because
`Cache-Control: max-age=0` is set (see
https://gitlab.com/gitlab-com/www-gitlab-com/-/merge_requests/87045),
and Fastly has a custom rule to skip HTML files and therefore won't
cache them.
This patches the `rsync.py` using
https://github.com/GoogleCloudPlatform/gsutil/pull/1430 to support these
command-line options so local gzip compression can be performed.
Relates to
https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/14852
The ruby-2.7 tags will always contain the latest
patch released for that minor version.
This allows us to ship patches more easily but
retains backwards compatibility with existing
repos asking for 2.7.2.
These patches are necessary to fix https://bugs.ruby-lang.org/issues/17725
which is unreleased.
This is currently breaking our Ruby 3 build, so until 3.0.3 is out
let's apply these independently.