mirror of
https://ops.gitlab.net/gitlab-org/gitlab-build-images.git
synced 2025-12-09 18:12:55 +01:00
Welcome to the matrix
This refactors our custom image building to utilize GitLab parallel jobs with a matrix. This makes it easier to parse what kind of matrix we are going to build in our docker images. Furthermore instead of splitting the image name, we can simply pull the versions of the tools from the environment variables. The ultimative reason: Dogfooding
This commit is contained in:
parent
32d1908296
commit
a9cf88c469
11 changed files with 325 additions and 292 deletions
108
.gitlab/ci/custom.images.yml
Normal file
108
.gitlab/ci/custom.images.yml
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
.test_build: &test_build
|
||||
extends: .test
|
||||
script:
|
||||
# Hack to set an array in /bin/sh
|
||||
# http://unix.stackexchange.com/a/137571
|
||||
- set -- $CI_JOB_NAME
|
||||
- docker pull --quiet "$CI_REGISTRY_IMAGE:$1" || true
|
||||
- docker build --cache-from="$CI_REGISTRY_IMAGE:$1" -f "Dockerfile.$1" .
|
||||
|
||||
.build_and_deploy: &build_and_deploy
|
||||
extends: .deploy
|
||||
script:
|
||||
# Hack to set an array in /bin/sh
|
||||
# http://unix.stackexchange.com/a/137571
|
||||
- set -- $CI_JOB_NAME
|
||||
- docker pull --quiet "$CI_REGISTRY_IMAGE:$1" || true
|
||||
- docker build --cache-from="$CI_REGISTRY_IMAGE:$1" --label "ci_pipeline_url=$CI_PIPELINE_URL" --label "ci_job_url=$CI_JOB_URL" -t "$CI_REGISTRY_IMAGE:$1" -f "Dockerfile.$1" .
|
||||
- docker push "$CI_REGISTRY_IMAGE:$1"
|
||||
|
||||
# Used by https://gitlab.com/gitlab-org/charts/auto-deploy-app/-/blob/master/.gitlab-ci.yml
|
||||
alpine-helm test: *test_build
|
||||
|
||||
danger test: *test_build
|
||||
danger-ruby-2.6.6 test: *test_build
|
||||
gitlab-charts-build-base test: *test_build
|
||||
gitlab-charts-build-base-helm-3 test: *test_build
|
||||
gitlab-helm3.5-kubectl1.17 test: *test_build
|
||||
gitlab-qa-ruby-2.7 test: *test_build
|
||||
gitlab-qa-ruby-3.0 test: *test_build
|
||||
gitlab-qa-alpine-ruby-2.7 test: *test_build
|
||||
gitlab-qa-alpine-ruby-3.0 test: *test_build
|
||||
gitlab-puppeteer test: *test_build
|
||||
kaniko test: *test_build
|
||||
omnibus-gitlab-bionic test: *test_build
|
||||
omnibus-gitlab-centos7 test: *test_build
|
||||
omnibus-gitlab-centos8 test: *test_build
|
||||
omnibus-gitlab-jessie test: *test_build
|
||||
omnibus-gitlab-opensuse15.1 test: *test_build
|
||||
omnibus-gitlab-opensuse15.2 test: *test_build
|
||||
omnibus-gitlab-opensuse15.3 test: *test_build
|
||||
omnibus-gitlab-stretch test: *test_build
|
||||
omnibus-gitlab-buster test: *test_build
|
||||
omnibus-gitlab-xenial test: *test_build
|
||||
omnibus-gitlab-focal test: *test_build
|
||||
omnibus-gitlab-depscan test: *test_build
|
||||
omnibus-gitlab-cve-search test: *test_build
|
||||
|
||||
release-tools test: *test_build
|
||||
sitespeed-gitlab test: *test_build
|
||||
ubi-release test: *test_build
|
||||
www-gitlab-com-3.0 test: *test_build
|
||||
build-git: *test_build
|
||||
# Used by GitLab: https://gitlab.com/gitlab-org/gitlab/-/blob/13-8-stable-ee/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml
|
||||
terraform test: *test_build
|
||||
# Used by go projects for linting https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/go_guide/index.md#automatic-linting
|
||||
golangci-lint-alpine test: *test_build
|
||||
# Used by gitlab-operator: https://gitlab.com/gitlab-org/gl-openshift/gitlab-operator
|
||||
gitlab-operator-build-base test: *test_build
|
||||
|
||||
alpine-bash-jq-curl-git test: *test_build
|
||||
|
||||
# Used by frontend related tasks for linting GraphQL
|
||||
apollo test: *test_build
|
||||
|
||||
|
||||
# Used by https://gitlab.com/gitlab-org/charts/auto-deploy-app/-/blob/master/.gitlab-ci.yml
|
||||
alpine-helm push: *build_and_deploy
|
||||
|
||||
danger push: *build_and_deploy
|
||||
danger-ruby-2.6.6 push: *build_and_deploy
|
||||
gitlab-charts-build-base push: *build_and_deploy
|
||||
gitlab-charts-build-base-helm-3 push: *build_and_deploy
|
||||
gitlab-helm3.5-kubectl1.17 push: *build_and_deploy
|
||||
gitlab-qa-ruby-2.7 push: *build_and_deploy
|
||||
gitlab-qa-ruby-3.0 push: *build_and_deploy
|
||||
gitlab-qa-alpine-ruby-2.7 push: *build_and_deploy
|
||||
gitlab-qa-alpine-ruby-3.0 push: *build_and_deploy
|
||||
gitlab-puppeteer push: *build_and_deploy
|
||||
kaniko push: *build_and_deploy
|
||||
omnibus-gitlab-bionic push: *build_and_deploy
|
||||
omnibus-gitlab-centos7 push: *build_and_deploy
|
||||
omnibus-gitlab-centos8 push: *build_and_deploy
|
||||
omnibus-gitlab-jessie push: *build_and_deploy
|
||||
omnibus-gitlab-opensuse15.1 push: *build_and_deploy
|
||||
omnibus-gitlab-opensuse15.2 push: *build_and_deploy
|
||||
omnibus-gitlab-opensuse15.3 push: *build_and_deploy
|
||||
omnibus-gitlab-stretch push: *build_and_deploy
|
||||
omnibus-gitlab-buster push: *build_and_deploy
|
||||
omnibus-gitlab-xenial push: *build_and_deploy
|
||||
omnibus-gitlab-focal push: *build_and_deploy
|
||||
omnibus-gitlab-depscan push: *build_and_deploy
|
||||
omnibus-gitlab-cve-search push: *build_and_deploy
|
||||
release-tools push: *build_and_deploy
|
||||
sitespeed-gitlab push: *build_and_deploy
|
||||
ubi-release push: *build_and_deploy
|
||||
www-gitlab-com-3.0 push: *build_and_deploy
|
||||
build-git push: *build_and_deploy
|
||||
# Used by GitLab: https://gitlab.com/gitlab-org/gitlab/-/blob/13-8-stable-ee/lib/gitlab/ci/templates/Terraform.gitlab-ci.yml
|
||||
terraform push: *build_and_deploy
|
||||
# Used by go projects for linting https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/go_guide/index.md#automatic-linting
|
||||
golangci-lint-alpine push: *build_and_deploy
|
||||
# Used by gitlab-operator: https://gitlab.com/gitlab-org/gl-openshift/gitlab-operator
|
||||
gitlab-operator-build-base push: *build_and_deploy
|
||||
|
||||
alpine-bash-jq-curl-git push: *build_and_deploy
|
||||
|
||||
# Used by frontend related tasks for linting GraphQL
|
||||
apollo push: *build_and_deploy
|
||||
45
.gitlab/ci/customers.images.yml
Normal file
45
.gitlab/ci/customers.images.yml
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Used by customers-gitlab-com rspec job: https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/staging/.gitlab-ci.yml
|
||||
.customers-matrix:
|
||||
variables:
|
||||
LFS: '2.9'
|
||||
CHROME: '89'
|
||||
NODE: '12.22'
|
||||
YARN: '1.22'
|
||||
POSTGRESQL: '9.5'
|
||||
parallel:
|
||||
matrix:
|
||||
- RUBY: ['2.6.6', '2.7', '2.7.2']
|
||||
GIT: ['2.31', '2.33']
|
||||
DOCKER: ['19.03.1', '']
|
||||
|
||||
customers test:
|
||||
extends:
|
||||
- .customers-matrix
|
||||
- .test_custom
|
||||
|
||||
customers push:
|
||||
extends:
|
||||
- .customers-matrix
|
||||
- .build_and_deploy_custom
|
||||
|
||||
# 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-matrix:
|
||||
variables:
|
||||
CHROME: '89'
|
||||
NODE: '12.22'
|
||||
YARN: '1.22'
|
||||
DOCKER: '19.03.1'
|
||||
parallel:
|
||||
matrix:
|
||||
- RUBY: ['2.7', '2.7.2']
|
||||
GIT: ['2.31', '2.33']
|
||||
|
||||
customers-qa-assets test:
|
||||
extends:
|
||||
- .customers-qa-matrix
|
||||
- .test_custom
|
||||
|
||||
customers-qa-assets push:
|
||||
extends:
|
||||
- .customers-qa-matrix
|
||||
- .build_and_deploy_custom
|
||||
25
.gitlab/ci/definitions.yml
Normal file
25
.gitlab/ci/definitions.yml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Run test job always
|
||||
.test:
|
||||
stage: test
|
||||
rules:
|
||||
- when: always
|
||||
|
||||
# Run build job only on a default branch when triggered manually
|
||||
.deploy:
|
||||
stage: deploy
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
||||
when: manual
|
||||
|
||||
.test_custom:
|
||||
extends: .test
|
||||
script:
|
||||
- ./scripts/custom-docker-build
|
||||
rules:
|
||||
- when: always
|
||||
|
||||
.build_and_deploy_custom:
|
||||
extends: .deploy
|
||||
script:
|
||||
- ./scripts/custom-docker-build --label "ci_pipeline_url=$CI_PIPELINE_URL" --label "ci_job_url=$CI_JOB_URL" -t "$CI_REGISTRY_IMAGE:$1"
|
||||
- ./scripts/custom-docker-push
|
||||
19
.gitlab/ci/gitaly.images.yml
Normal file
19
.gitlab/ci/gitaly.images.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Used by Gitaly: https://gitlab.com/gitlab-org/gitaly/blob/master/.gitlab-ci.yml
|
||||
.gitaly-matrix:
|
||||
parallel:
|
||||
matrix:
|
||||
- RUBY: ['2.7', '3.0']
|
||||
GOLANG: ['1.16', '1.17']
|
||||
GIT: ['2.31', '2.33']
|
||||
PGBOUNCER: ['1.14', '']
|
||||
|
||||
gitaly:test:
|
||||
needs: []
|
||||
extends:
|
||||
- .gitaly-matrix
|
||||
- .test_custom
|
||||
|
||||
gitaly push:
|
||||
extends:
|
||||
- .gitaly-matrix
|
||||
- .build_and_deploy_custom
|
||||
46
.gitlab/ci/gitlab.images.yml
Normal file
46
.gitlab/ci/gitlab.images.yml
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# Used by GitLab: https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml
|
||||
.gitlab-matrix:
|
||||
variables:
|
||||
GOLANG: '1.16'
|
||||
LFS: '2.9'
|
||||
CHROME: '89'
|
||||
NODE: '14.15'
|
||||
YARN: '1.22'
|
||||
GRAPHICSMAGICK: '1.3.36'
|
||||
parallel:
|
||||
matrix:
|
||||
- RUBY: ['2.7.patched', '3.0.patched']
|
||||
GIT: ['2.31', '2.33']
|
||||
POSTGRESQL: ['11', '12', '13']
|
||||
|
||||
gitlab test:
|
||||
extends:
|
||||
- .gitlab-matrix
|
||||
- .test_custom
|
||||
|
||||
gitlab push:
|
||||
extends:
|
||||
- .gitlab-matrix
|
||||
- .build_and_deploy_custom
|
||||
|
||||
# Used by GitLab's compile-production-assets and compile-test-assets jobs
|
||||
.gitlab-assets-matrix:
|
||||
variables:
|
||||
LFS: '2.9'
|
||||
NODE: '14.15'
|
||||
YARN: '1.22'
|
||||
GRAPHICSMAGICK: '1.3.36'
|
||||
parallel:
|
||||
matrix:
|
||||
- RUBY: ['2.7', '3.0']
|
||||
GIT: ['2.31', '2.33']
|
||||
|
||||
gitlab-assets test:
|
||||
extends:
|
||||
- .gitlab-assets-matrix
|
||||
- .test_custom
|
||||
|
||||
gitlab-assets push:
|
||||
extends:
|
||||
- .gitlab-assets-matrix
|
||||
- .build_and_deploy_custom
|
||||
24
.gitlab/ci/kas.images.yml
Normal file
24
.gitlab/ci/kas.images.yml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Used by GitLab/KAS integration tests
|
||||
.gitlab-kas-matrix:
|
||||
variables:
|
||||
GOLANG: '1.16'
|
||||
LFS: '2.9'
|
||||
CHROME: '89'
|
||||
NODE: '14.15'
|
||||
YARN: '1.22'
|
||||
GRAPHICSMAGICK: '1.3.36'
|
||||
GIT: '2.31'
|
||||
POSTGRESQL: '12'
|
||||
parallel:
|
||||
matrix:
|
||||
- RUBY: ['2.7.2.patched', '2.7.patched', '3.0.patched']
|
||||
|
||||
gitlab-kas test:
|
||||
extends:
|
||||
- .gitlab-kas-matrix
|
||||
- .test_custom
|
||||
|
||||
gitlab-kas push:
|
||||
extends:
|
||||
- .gitlab-kas-matrix
|
||||
- .build_and_deploy_custom
|
||||
Loading…
Add table
Add a link
Reference in a new issue