Find a file
Jacob Vosmaer (GitLab) aec5d3edbd Merge branch 'sh-bump-go-1.9.4' into 'master'
Bump build images to go 1.9.4

See merge request gitlab-org/gitlab-build-images!82
2018-02-27 15:48:08 +00:00
scripts Bump build images to go 1.9.4 2018-02-26 17:03:26 -08:00
.gitlab-ci.yml Build new images with git 2.16 2018-02-26 13:58:14 -08:00
CONTRIBUTING.md Update license and contributing.md 2017-11-14 14:57:23 +01:00
Dockerfile.custom Fix for bug that forces all Go binaries to be based on Go 1.8 (the default) 2017-12-21 11:55:07 +00:00
Dockerfile.gitlab-qa Add GitLab QA base image 2017-02-20 09:35:35 +01:00
Dockerfile.omnibus-gitlab-centos6 Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.omnibus-gitlab-centos7 Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.omnibus-gitlab-jessie Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.omnibus-gitlab-opensuse42.3 Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.omnibus-gitlab-stretch Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.omnibus-gitlab-trusty Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.omnibus-gitlab-wheezy Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.omnibus-gitlab-xenial Add g++ to debian/ubuntu/opensuse 2018-02-26 14:02:50 -08:00
Dockerfile.sitespeed-gitlab add custom sitespeed image for gitlab 2018-02-21 17:50:11 -06:00
Dockerfile.www-gitlab-com Fix for bug that forces all Go binaries to be based on Go 1.8 (the default) 2017-12-21 11:55:07 +00:00
LICENSE Update license and contributing.md 2017-11-14 14:57:23 +01:00
README.md Update license and contributing.md 2017-11-14 14:57:23 +01:00

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 docker buildfile
  2. Use a custom image with versioned features

Use a docker buildfile

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.

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

  1. Add a test task: new-image test: *test_build
  2. Add a new build task: new-image: *build_and_deploy
  3. Add a Dockerfile: Dockerfile.new-image

Use a custom image with versioned features

To add a new image to the build, edit .gitlab-ci.yml.

With custom images, the name of the image is used to define the contents (as opposed to use a bespoke Dockerfile build).

For this reason, the name needs to be correctly defined.

The name is defined as [feature]-[version] pairs, separated by -.

Here are some example build names:

  1. ruby-2.1-git-2.7-phantomjs-2.1
  2. ruby-2.3.3-golang-1.8-git-2.7-chrome-60.0-node-7.1-postgresql-9.6
  3. ruby-2.4.1-golang-1.8-git-2.7-phantomjs-2.1-node-7.1-postgresql-9.6

The first pair represents the base image and version. So ruby-2.1-... will use the ruby:2.1 base image, while golang-1.8 will use the golang:1.8 base image.

Each of the following parts represents another feature and version. Available options are:

  1. golang
  2. git
  3. chrome
  4. node
  5. yarn
  6. phantomjs
  7. postgres

Adding a new build

As an example, if you want to add new image for Ruby 2.4 with git 2.14 and golang 1.9, the name would be ruby-2.4-golang-1.9-git-2.14.

  1. Add a test task: ruby-2.4-golang-1.9-git-2.14 test: *test_custom
  2. Add a new build task: ruby-2.4-golang-1.9-git-2.14: *build_and_deploy_custom

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. This means images with non-current chrome versions will fail to build. Until a better solution is worked out, we will remove images based on older Chrome versions from the build process, but preserve them for reference within a comment in the .gitlab-ci.yml file.

These images will persist in the docker repository for legacy use, but will no longer be recompiled. If an update ever needs to be made to an image containing an older version of Chrome, a workaround can be modeled after https://gitlab.com/gitlab-org/gitlab-build-images/merge_requests/54

Contributing

See Contributing