Publish images with full Ruby version

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Rémy Coutable 2024-05-24 13:18:37 +02:00
parent b16d8a9f74
commit 57fe03c0e4
No known key found for this signature in database
15 changed files with 97 additions and 98 deletions

View file

@ -24,14 +24,19 @@ default:
- gitlab-org-docker
stages:
- custom
- gitlab
- gitlab-chart
- gitlab-assets
- gitlab-review-app
- workhorse
- gitaly
- automation
- custom
- customers
- docker
- e2e
- ep
- gitaly
- gitlab
- gitlab-assets
- gitlab-chart
- gitlab-cng
- gitlab-kas
- gitlab-workhorse
variables:
DOCKER_HOST: tcp://docker:2375

View file

@ -1,7 +1,7 @@
---
.customers:
.customers-base:
extends:
- .build_dynamic_image
stage: customers
rules:
- !reference [.build_dynamic_image, rules]
- changes:
@ -11,9 +11,9 @@
# Used by customers-gitlab-com rspec job: https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/staging/.gitlab-ci.yml
customers:
extends:
- .customers
- .customers-base
variables:
RUBY: '3.2'
RUBY: '3.2.4'
LFS: '2.9'
CHROME: '119'
NODE: '20.12'
@ -27,9 +27,9 @@ customers:
# Used by customers-gitlab-com qa e2e test: https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/staging/.gitlab/ci/e2e.gitlab-ci.yml
customers-qa-assets:
extends:
- .customers
- .customers-base
variables:
RUBY: '3.2'
RUBY: '3.2.4'
CHROME: '119'
NODE: '20.12'
YARN: '1.22'

View file

@ -1,7 +1,8 @@
# Docker image with buildx plugin
.docker:
.docker-base:
extends:
- .build_dynamic_image
stage: docker
rules:
- !reference [.build_dynamic_image, rules]
- changes:
@ -10,7 +11,7 @@
docker:
extends:
- .docker
- .docker-base
parallel:
matrix:
- OS: ['debian:bookworm', 'debian:bookworm-slim']

View file

@ -1,7 +1,9 @@
# Used by gitlab e2e tests and other qa related tasks
.e2e:
# Used by GitLab's Review app jobs and triage-ops
.e2e-base:
extends:
- .build_dynamic_image
stage: e2e
rules:
- !reference [.build_dynamic_image, rules]
- changes:
@ -21,11 +23,11 @@
# Base image with just ruby and bundler
e2e:
extends:
- .e2e
- .e2e-base
parallel:
matrix:
- OS: ["debian:bookworm"]
RUBY: ['3.0', '3.1', '3.2']
RUBY: ['3.0.6', '3.1.5', '3.2.4']
BUNDLER: ['2.4', '2.5']
# Image with ruby, bundler and docker
@ -42,7 +44,7 @@ e2e-chrome:
parallel:
matrix:
- OS: ["debian:bookworm"]
RUBY: ['3.0', '3.1', '3.2']
RUBY: ['3.0.6', '3.1.5', '3.2.4']
BUNDLER: ['2.4', '2.5']
CHROME: ['120', '123']
@ -58,7 +60,7 @@ e2e-cng:
parallel:
matrix:
- OS: ['debian:bookworm']
RUBY: ['3.0', '3.1', '3.2']
RUBY: ['3.0.6', '3.1.5', '3.2.4']
BUNDLER: ['2.5']
CHROME: ['120', '123']

18
.gitlab/ci/ep.images.yml Normal file
View file

@ -0,0 +1,18 @@
# Used by GitLab's Review app jobs and triage-ops
.ep-base:
extends:
- .build_dynamic_image
stage: ep
rules:
- !reference [.build_dynamic_image, rules]
- changes:
- ".gitlab/ci/ep.images.yml"
ep-native-cloud-services:
extends:
- .ep-base
variables:
RUBY: '3.2.4'
GCLOUD: '383'
KUBECTL: '1.27'
HELM: '3.9'

View file

@ -1,7 +1,8 @@
# Used by Gitaly: https://gitlab.com/gitlab-org/gitaly/blob/master/.gitlab-ci.yml
.gitaly:
.gitaly-base:
extends:
- .build_dynamic_image
stage: gitaly
rules:
- !reference [.build_dynamic_image, rules]
- changes:
@ -12,10 +13,8 @@
- ".gitlab/ci/gitaly.images.yml"
gitaly:
needs: []
extends:
- .gitaly
stage: gitaly
- .gitaly-base
parallel:
matrix:
- OS: ['debian:bookworm']

View file

@ -1,8 +1,9 @@
# Used by GitLab chart CI (https://gitlab.com/gitlab-org/charts/gitlab)
.gitlab-chart:
.gitlab-chart-base:
extends:
- .build_dynamic_image
stage: gitlab-chart
rules:
- !reference [.build_dynamic_image, rules]
- changes:
@ -16,10 +17,9 @@
gitlab-chart:
extends:
- .gitlab-chart
stage: gitlab-chart
- .gitlab-chart-base
variables:
RUBY: '3.2'
RUBY: '3.2.4'
HELM: '3.10'
HELM_KUBECONFORM: '0.1.17'
VCLUSTER: '0.19'

View file

@ -1,5 +1,8 @@
# Used by GitLab: https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml
.gitlab-cng-matrix:
.gitlab-cng-base:
extends:
- .build_dynamic_image
stage: gitlab-cng
variables:
LFS: '2.9'
CHROME: '123'
@ -7,7 +10,7 @@
YARN: '1.22'
GRAPHICSMAGICK: '1.3.36'
POSTGRESQL: '11'
RUBY: '3.0.patched'
RUBY: '3.0.6'
GIT: '2.33'
GOLANG: '1.21'
KUBECTL: '1.23'
@ -15,8 +18,7 @@
gitlab-cng:
extends:
- .gitlab-cng-matrix
- .build_dynamic_image
- .gitlab-cng-base
rules:
- !reference [.build_dynamic_image, rules]
- changes:

View file

@ -1,7 +1,8 @@
# Used by GitLab/KAS integration tests
.kas:
.gitlab-kas-base:
extends:
- .build_dynamic_image
stage: gitlab-kas
rules:
- !reference [.build_dynamic_image, rules]
- changes:
@ -10,7 +11,7 @@
gitlab-kas:
extends:
- .kas
- .gitlab-kas-base
variables:
GOLANG: '1.21'
RUST: '1.73'
@ -23,4 +24,4 @@ gitlab-kas:
POSTGRESQL: '12'
parallel:
matrix:
- RUBY: ['3.0.patched', '3.1.patched', '3.2.patched']
- RUBY: ['3.0.6', '3.1.5', '3.2.4']

View file

@ -1,36 +1,19 @@
# Used by GitLab: https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml
.gitlab:
.gitlab-base:
extends:
- .build_dynamic_image
stage: gitlab
rules:
- !reference [.build_dynamic_image, rules]
- changes:
- "scripts/install-bazelisk"
- "scripts/install-chrome"
- "scripts/install-docker"
- "scripts/install-essentials"
- "scripts/install-exiftool"
- "scripts/install-git"
- "scripts/install-gcloud"
- "scripts/install-golang"
- "scripts/install-graphicsmagick"
- "scripts/install-helm"
- "scripts/install-kubectl"
- "scripts/install-lfs"
- "scripts/install-node"
- "scripts/install-pcre2"
- "scripts/install-postgresql"
- "scripts/install-ruby"
- "scripts/install-rust"
- "scripts/install-*"
- "scripts/lib/custom-docker-build"
- ".gitlab/ci/gitlab.images.yml"
- "patches/ruby/**/*"
gitlab:
extends:
- .gitlab
stage: gitlab
- .gitlab-base
variables:
RUBYGEMS: '3.4'
LFS: '2.9'
@ -43,15 +26,24 @@ gitlab:
parallel:
matrix:
- OS: ['debian:bookworm', 'debian:bookworm-slim']
RUBY: ['3.0.patched', '3.1.patched', '3.2.patched']
RUBY: ['3.0.6', '3.1.5', '3.2.4']
POSTGRESQL: ['13', '14', '15', '16']
GOLANG: ['1.21', '1.22']
CHROME: ['123']
# Used by GitLab's jobs that work with ruby gems
gitlab-slim-ruby:
extends:
- .gitlab-base
parallel:
matrix:
- RUBY: ['3.0.6', '3.1.5', '3.2.4']
OS: ['debian:bookworm-slim']
# Used by GitLab's compile-production-assets and compile-test-assets jobs
gitlab-assets:
extends:
- .gitlab
- .gitlab-base
stage: gitlab-assets
variables:
RUBYGEMS: '3.4'
@ -63,48 +55,27 @@ gitlab-assets:
parallel:
matrix:
- OS: ['debian:bookworm']
RUBY: ['3.0', '3.1', '3.2']
RUBY: ['3.0.6', '3.1.5', '3.2.4']
GIT: ['2.33']
# Used by GitLab's Review app jobs and triage-ops
ep-native-cloud-services:
extends:
- .gitlab
stage: gitlab-review-app
variables:
RUBY: '3.0'
GCLOUD: '383'
KUBECTL: '1.27'
HELM: '3.9'
# Used by GitLab's jobs that work with ruby gems
gitlab-slim-ruby:
extends:
- .gitlab
stage: gitlab
parallel:
matrix:
- RUBY: ['3.0', '3.1', '3.2']
OS: ['debian:bookworm-slim']
# Used by GitLab's workhorse tests
gitlab-workhorse:
needs: []
extends:
- .gitlab
stage: workhorse
- .gitlab-base
stage: gitlab-workhorse
variables:
EXIFTOOL: '12.60'
RUBYGEMS: '3.4'
parallel:
matrix:
- OS: ['debian:bookworm']
RUBY: ['3.0', '3.1', '3.2']
RUBY: ['3.0.6', '3.1.5', '3.2.4']
GOLANG: ['1.21', '1.22']
RUST: ['1.73']
GIT: ['2.36']
- OS: ['ubi:8.6']
RUBY: ['3.0', '3.1', '3.2']
RUBY: ['3.0.6', '3.1.5', '3.2.4']
GOLANG: ['1.21', '1.22']
RUST: ['1.73']
GIT: ['2.36']

View file

@ -5,7 +5,7 @@ ARG GCLOUD_VERSION=413.0.0
# gsutil 5.18 unnecessarily requires the storage.buckets.get
# permission: https://github.com/GoogleCloudPlatform/gsutil/issues/1663
FROM gcr.io/google.com/cloudsdktool/cloud-sdk:$GCLOUD_VERSION as gcloud-sdk
FROM ruby:3.0.5-slim-bullseye
FROM ruby:3.0.6-slim-bullseye
# pupulated by docker buildx build --platform flag
ARG TARGETARCH

View file

@ -5,7 +5,7 @@ ARG GCLOUD_VERSION=413.0.0
# gsutil 5.18 unnecessarily requires the storage.buckets.get
# permission: https://github.com/GoogleCloudPlatform/gsutil/issues/1663
FROM gcr.io/google.com/cloudsdktool/cloud-sdk:$GCLOUD_VERSION as gcloud-sdk
FROM ruby:3.2.2-slim-bullseye
FROM ruby:3.2.4-slim-bullseye
# pupulated by docker buildx build --platform flag
ARG TARGETARCH

View file

@ -85,7 +85,7 @@ Here are some example build names:
1. `debian-bullseye-ruby-2.7-golang-1.15:git-2.29`
1. `debian-bullseye-ruby-3.0.0-node-14.15:git-2.29-lfs-2.9-yarn-1.22-graphicsmagick-1.3.34`
1. `debian-bullseye-ruby-3.0.0.patched-golang-1.14-postgresql-12:git-2.29-lfs-2.9-chrome-87-node-14.15-yarn-1.22-graphicsmagick-1.3.34`
1. `debian-bullseye-ruby-3.0.0-golang-1.14-postgresql-12:git-2.29-lfs-2.9-chrome-87-node-14.15-yarn-1.22-graphicsmagick-1.3.34`
#### Adding a new build
@ -98,7 +98,7 @@ new_image:
- .build_dynamic_image
variables:
OS: 'debian:bookworm'
RUBY: '3.0'
RUBY: '3.0.6'
GOLANG: '1.15'
RUST: '1.73.0'
GIT: '2.29'
@ -121,11 +121,11 @@ See `scripts/cache-google-chrome` for more details.
## Note regarding Golang and FIPS
When adding support for a new major/minor Golang version, we also need to
ensure there's a matching [`golang-fips`](https://github.com/golang-fips/)
When adding support for a new major/minor Golang version, we also need to
ensure there's a matching [`golang-fips`](https://github.com/golang-fips/)
branch available, e.g. for Golang 1.21 there's https://github.com/golang-fips/go/tree/go1.21-fips-release.
The `golang-fips` branch creation process can take time and so it
[may be necessary to use the previous version](https://gitlab.com/gitlab-org/gitlab-build-images/-/merge_requests/771)
The `golang-fips` branch creation process can take time and so it
[may be necessary to use the previous version](https://gitlab.com/gitlab-org/gitlab-build-images/-/merge_requests/771)
until it's available.
## Contributing

View file

@ -222,17 +222,17 @@ function print_bazelisk_args() {
function print_ruby_args() {
case "$1" in
3.0|3.0.patched)
3.0.6)
RUBY_VERSION="3.0.6"
RUBY_DOWNLOAD_SHA256="6e6cbd490030d7910c0ff20edefab4294dfcd1046f0f8f47f78b597987ac683e"
;;
3.1|3.1.patched)
3.1.5)
RUBY_VERSION="3.1.5"
RUBY_DOWNLOAD_SHA256="3685c51eeee1352c31ea039706d71976f53d00ab6d77312de6aa1abaf5cda2c5"
;;
3.2|3.2.patched)
3.2.4)
RUBY_VERSION="3.2.4"
RUBY_DOWNLOAD_SHA256="c72b3c5c30482dca18b0f868c9075f3f47d8168eaf626d4e682ce5b59c858692"
;;
@ -297,7 +297,7 @@ function print_kubectl_args() {
declare -A KUBECTL_DOWNLOAD_SHA256
# Use the commands below to download the sha256, and adapt the version number in the commands.
#
#
# curl -L "https://dl.k8s.io/release/v1.29.0/bin/linux/amd64/kubectl.sha256"
# curl -L "https://dl.k8s.io/release/v1.29.0/bin/linux/arm64/kubectl.sha256"
case "$1" in
@ -313,7 +313,7 @@ function print_kubectl_args() {
;;
1.27)
# We need to use at least 1.27.2
#
#
# see https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119916
KUBECTL_VERSION=1.27.2
KUBECTL_DOWNLOAD_SHA256[amd64]=4f38ee903f35b300d3b005a9c6bfb9a46a57f92e89ae602ef9c129b91dc6c5a5

View file

@ -8,7 +8,7 @@ TAG_TOOLS=(BUNDLER RUBYGEMS GIT LFS CHROME YARN GRAPHICSMAGICK EXIFTOOL BAZELISK
# variables.
# For example, consider a CI job which specifies the following variables:
# OS: debian:bullseye
# RUBY: 3.0
# RUBY: 3.0.6
# GOLANG: 1.19
# RUST: 1.73.0
# GIT: 2.33
@ -43,7 +43,7 @@ function get_image_path() {
# Generate the image tag using the components that were specified via variables.
# For example, consider a CI job which specifies the following variables:
# OS: debian:bullseye
# RUBY: 2.7
# RUBY: 3.1.5
# GOLANG: 1.19
# RUST: 1.73.0
# GIT: 2.33