diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5e09c14..db40864 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/.gitlab/ci/customers.images.yml b/.gitlab/ci/customers.images.yml index c55915d..7e26802 100644 --- a/.gitlab/ci/customers.images.yml +++ b/.gitlab/ci/customers.images.yml @@ -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' diff --git a/.gitlab/ci/docker.images.yml b/.gitlab/ci/docker.images.yml index bd53b28..5fc55d2 100644 --- a/.gitlab/ci/docker.images.yml +++ b/.gitlab/ci/docker.images.yml @@ -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'] diff --git a/.gitlab/ci/e2e.images.yml b/.gitlab/ci/e2e.images.yml index 4e31d27..82270d4 100644 --- a/.gitlab/ci/e2e.images.yml +++ b/.gitlab/ci/e2e.images.yml @@ -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'] diff --git a/.gitlab/ci/ep.images.yml b/.gitlab/ci/ep.images.yml new file mode 100644 index 0000000..b43e9d7 --- /dev/null +++ b/.gitlab/ci/ep.images.yml @@ -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' diff --git a/.gitlab/ci/gitaly.images.yml b/.gitlab/ci/gitaly.images.yml index ee4775c..aaaea72 100644 --- a/.gitlab/ci/gitaly.images.yml +++ b/.gitlab/ci/gitaly.images.yml @@ -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'] diff --git a/.gitlab/ci/gitlab.helm.images.yml b/.gitlab/ci/gitlab-chart.images.yml similarity index 91% rename from .gitlab/ci/gitlab.helm.images.yml rename to .gitlab/ci/gitlab-chart.images.yml index 481754e..0f3e0f1 100644 --- a/.gitlab/ci/gitlab.helm.images.yml +++ b/.gitlab/ci/gitlab-chart.images.yml @@ -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' diff --git a/.gitlab/ci/cng-images.yml b/.gitlab/ci/gitlab-cng.images.yml similarity index 83% rename from .gitlab/ci/cng-images.yml rename to .gitlab/ci/gitlab-cng.images.yml index cdf556e..e6dbe20 100644 --- a/.gitlab/ci/cng-images.yml +++ b/.gitlab/ci/gitlab-cng.images.yml @@ -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: diff --git a/.gitlab/ci/kas.images.yml b/.gitlab/ci/gitlab-kas.images.yml similarity index 81% rename from .gitlab/ci/kas.images.yml rename to .gitlab/ci/gitlab-kas.images.yml index c597e8f..d2c6f38 100644 --- a/.gitlab/ci/kas.images.yml +++ b/.gitlab/ci/gitlab-kas.images.yml @@ -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'] diff --git a/.gitlab/ci/gitlab.images.yml b/.gitlab/ci/gitlab.images.yml index 57f3e1d..4ac1fb3 100644 --- a/.gitlab/ci/gitlab.images.yml +++ b/.gitlab/ci/gitlab.images.yml @@ -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'] diff --git a/Dockerfile.www-gitlab-com-debian-bookworm-ruby-3.2.4-node-20 b/Dockerfile.www-gitlab-com-debian-bookworm-ruby-3.2.4-node-20 new file mode 100644 index 0000000..d3fdf59 --- /dev/null +++ b/Dockerfile.www-gitlab-com-debian-bookworm-ruby-3.2.4-node-20 @@ -0,0 +1,28 @@ +ARG GCLOUD_VERSION=413.0.0 + +# Google-cloud-sdk +# +# 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.4-slim-bookworm +# pupulated by docker buildx build --platform flag +ARG TARGETARCH + +# Install Google Cloud SDK for deploys via rsync +COPY --from=gcloud-sdk /usr/lib/google-cloud-sdk /usr/lib/google-cloud-sdk +COPY --from=gcloud-sdk /usr/share/google-cloud-sdk /usr/share/google-cloud-sdk +RUN cd /usr/bin && find ../lib/google-cloud-sdk/bin -type f -executable -exec ln -s {} \;; cd - + +ADD /scripts/ /scripts/ +ADD /patches /patches/ + +ENV NODE_INSTALL_VERSION=20.12.2 +ENV YARN_INSTALL_VERSION=1.22.19 +RUN /scripts/install-www-gitlab-com + +# Set UTF-8 http://jaredmarkell.com/docker-and-locales/ +# Must be set after install-essentials is run +ENV LANG C.UTF-8 +ENV LANGUAGE C +ENV LC_ALL C.UTF-8 diff --git a/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.0-node-16 b/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.0.6-node-16 similarity index 96% rename from Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.0-node-16 rename to Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.0.6-node-16 index 9c5298f..108c3be 100644 --- a/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.0-node-16 +++ b/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.0.6-node-16 @@ -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 diff --git a/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.2-node-18 b/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.2.4-node-18 similarity index 96% rename from Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.2-node-18 rename to Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.2.4-node-18 index 4e8724b..046d7ef 100644 --- a/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.2-node-18 +++ b/Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.2.4-node-18 @@ -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 diff --git a/README.md b/README.md index 3f0ec98..422abc7 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/scripts/lib/custom-docker-build b/scripts/lib/custom-docker-build index f1a1067..64e6e09 100755 --- a/scripts/lib/custom-docker-build +++ b/scripts/lib/custom-docker-build @@ -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 diff --git a/scripts/lib/custom-docker.sh b/scripts/lib/custom-docker.sh index 49d02fe..8fe2920 100644 --- a/scripts/lib/custom-docker.sh +++ b/scripts/lib/custom-docker.sh @@ -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