Find a file
2024-05-17 08:06:16 +00:00
.gitlab Add dynamic Helm 3.10 CI image for GitLab chart 2024-05-07 10:48:03 +00:00
assets Make run-zoekt-servers name version independent 2024-01-23 14:18:57 -08:00
patches Update to Ruby 3.2.3 2024-03-07 09:46:55 -08:00
scripts go: Bump to 1.22.3 for non-FIPS image 2024-05-17 08:06:16 +00:00
.dockerignore Experiment: automatically push built images 2022-05-11 12:56:08 +00:00
.gitattributes Add Dockerfile syntax highlighting 2019-03-26 09:52:21 +00:00
.gitignore Add .DS_Store to .gitignore 2022-07-25 04:20:18 +00:00
.gitlab-ci.yml Add dynamic Helm 3.10 CI image for GitLab chart 2024-05-07 10:48:03 +00:00
CODEOWNERS Add CODEOWNERS file 2021-11-25 10:42:10 +00:00
CONTRIBUTING.md Update license and contributing.md 2017-11-14 14:57:23 +01:00
Dockerfile.alpine-bash-jq-curl-git Add image with tools required to hit and API and parse the JSON response 2021-10-04 16:07:14 +05:30
Dockerfile.apollo Revert "Merge branch 'vs/bump-nodejs-for-apollo-image' into 'master'" 2022-03-28 18:41:45 +00:00
Dockerfile.build-git Add Dockerfile to build Git 2020-02-06 16:53:49 +01:00
Dockerfile.cache-chrome Add Debian Bookworm images 2024-01-18 10:20:04 +00:00
Dockerfile.custom Add dynamic Helm 3.10 CI image for GitLab chart 2024-05-07 10:48:03 +00:00
Dockerfile.danger Drop unsupported Node.js versions 2023-09-19 09:52:04 +00:00
Dockerfile.gitlab-helm3.9-kubectl1.23 Bump minimum default version for Helm to 3.9.4 2023-11-29 06:34:48 +00:00
Dockerfile.gitlab-operator-build-base-golang-1.21 Add Go 1.21 Operator build image 2024-01-31 14:44:53 +01:00
Dockerfile.gitlab-vscode-build Use buster as the base image for vscode build 2024-02-22 12:33:51 +00:00
Dockerfile.gitlab-vscode-nodeless Create Dockerfile.gitlab-vscode-nodeless 2022-07-28 02:45:10 -07:00
Dockerfile.golangci-lint-1.50-alpine Deprecate custom golangci-lint images 2024-02-29 13:44:19 +11:00
Dockerfile.golangci-lint-1.51-alpine Deprecate custom golangci-lint images 2024-02-29 13:44:19 +11:00
Dockerfile.golangci-lint-1.52-alpine Deprecate custom golangci-lint images 2024-02-29 13:44:19 +11:00
Dockerfile.kaniko Update Kaniko version to 1.14.0 2023-08-28 06:59:30 +00:00
Dockerfile.postgres-12-pgvector-0.4.1 Add postgres-pgvector images 2023-04-21 13:22:06 +02:00
Dockerfile.postgres-13-pgvector-0.4.1 Add postgres-pgvector images 2023-04-21 13:22:06 +02:00
Dockerfile.postgres-14-pgvector-0.4.1 Add postgres-pgvector images 2023-04-21 13:22:06 +02:00
Dockerfile.postgres-15-pgvector-0.4.1 Adds a PG15 pgvector build image variant 2023-05-02 22:05:21 -03:00
Dockerfile.postgres-16-pgvector-0.4.1 Add Postgresql 16 build variant 2024-02-14 18:53:56 +00:00
Dockerfile.redis-cluster-6.2.12 Remove redundant docker statements 2023-05-19 12:21:55 +08:00
Dockerfile.redis-cluster-7.0.11 Add Redis Cluster 7.0.11 image 2023-07-03 10:23:00 +05:30
Dockerfile.release-tools Use C.UTF-8 2021-12-13 10:31:08 +00:00
Dockerfile.sitespeed-gitlab Move static files to assets directory 2019-11-21 09:51:13 -08:00
Dockerfile.terraform add terraform image 2020-03-12 20:19:25 +00:00
Dockerfile.triage-ops-ruby-2.7 Add triage-ops image 2022-02-03 15:34:29 +01:00
Dockerfile.ubi-release Revert "Use pip3 to grab python3 awscli" 2020-06-26 13:58:52 -07:00
Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.0-node-16 Build www-gitlab-com images for arm64 2024-04-09 11:40:05 +00:00
Dockerfile.www-gitlab-com-debian-bullseye-ruby-3.2-node-18 Build www-gitlab-com images for arm64 2024-04-09 11:40:05 +00:00
Dockerfile.zoekt-ci-image-1.6 Make run-zoekt-servers name version independent 2024-01-23 14:18:57 -08:00
Dockerfile.zoekt-ci-image-1.7 Add zoekt-ci-image-1.7 2024-02-07 14:25:11 +00:00
Dockerfile.zoekt-ci-image-1.8 Add universal ctags to zoekt CI image 2024-03-01 16:38:11 +00:00
LICENSE Update license and contributing.md 2017-11-14 14:57:23 +01:00
README.md Add comment about Golang and FIPS 2024-02-27 01:09:14 +00:00

GitLab Build Images

This repository is used to build docker images that are used to build and test various parts of GitLab:

  1. Build Omnibus packages
  2. Test GitLab-CE/EE project
  3. Build gitlab-org/www-gitlab-com project

Adding a new image

There are two methods to adding a new image:

  1. Use a Dockerfile.
  2. Use a custom image with versioned features.

Use a Dockerfile

A bespoke image is one that uses it's own Dockerfile. In the interests of avoiding repetition, it's better to use the custom docker build if possible.

Images from a custom Dockerfile are built from job definitions in custom.images.yml

Assuming the image you want to add is called new-image:

  1. Add a new build job:
new-image:
  extends: .build_static_image

NOTE: You can use parallel:matrix keyword to build images for multiple architectures:

new-image:
  extends: .build_static_image
  parallel:
    matrix:
      - ARCH: [ 'arm64', 'amd64' ]
  1. Add a Dockerfile: Dockerfile.new-image.

Use a custom image with versioned features

To add a new image to the build, create a new images definition file like gitlab.images.yml.

With custom images, the components and versions define the resulting image name and tag.

Major components define image path. Base image is defined by OS component. Supported base images are:

  1. debian:$version
  2. ubi:$version

Supported major components are:

  1. OS
  2. RUBY
  3. GOLANG
  4. RUST
  5. NODE
  6. POSTGRES

Minor components define tag name. Supported minor components are:

  1. BUNDLER
  2. RUBYGEMS
  3. GIT
  4. LFS
  5. CHROME
  6. YARN
  7. GRAPHICSMAGICK
  8. EXIFTOOL
  9. BAZELISK
  10. DOCKER
  11. BUILDX
  12. GCLOUD
  13. KUBECTL
  14. HELM

The names are defined as [feature]-[version] pairs, separated by -.

Here are some example build names:

  1. debian-bullseye-ruby-2.7-golang-1.15:git-2.29
  2. debian-bullseye-ruby-3.0.0-node-14.15:git-2.29-lfs-2.9-yarn-1.22-graphicsmagick-1.3.34
  3. 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

Adding a new build

As an example, if you want to add new image for Ruby 3.0 with git 2.29 and golang 1.15 based on debian bullseye, following job definition would have to be created:

new_image:
  extends:
    - .build_dynamic_image
  variables:
    OS: 'debian:bookworm'
    RUBY: '3.0'
    GOLANG: '1.15'
    RUST: '1.73.0'
    GIT: '2.29'

Note that tag name is limited to 128 characters so amount of minor components an image can have is limited by it.

Pushing a rebuild image

Images are built and pushed automatically after a merge request is merged.

Note regarding Google Chrome

Google has a policy of yanking older versions of Google Chrome from their PPA whenever a new major version is released. To help maintain consistent build images, there is a CI step that saves the latest Google Chrome and Chromium .deb into an the GitLab package registry. The install for Chrome will use registry to fetch corresponding packages. Make sure a certain version is cached before updating it in build jobs. 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 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 until it's available.

Contributing

See Contributing