gitlab-ci: Organize images using new REPO_SUFFIX templates feature

Two benefits:

Most docker image related environment variables can now be defined in
the jobs where they're used instead of globally. The DEBIAN_TAG values
are propagated to other jobs via YAML anchors.

Images on https://gitlab.freedesktop.org/mesa/mesa/container_registry
are now organized in separate repositories with a suffix matching the
name of the job which makes sure the image is there.

Acked-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
This commit is contained in:
Michel Dänzer 2019-11-11 18:13:28 +01:00 committed by Michel Dänzer
parent 506e9d5fc7
commit c6c7652753
2 changed files with 75 additions and 60 deletions

View File

@ -1,36 +1,10 @@
# This is the tag of the docker image used for the build jobs. If the
# image doesn't exist yet, the containers stage generates it.
#
# In order to generate a new image, one should generally change the tag.
# While removing the image from the registry would also work, that's not
# recommended except for ephemeral images during development: Replacing
# an image after a significant amount of time might pull in newer
# versions of gcc/clang or other packages, which might break the build
# with older commits using the same tag.
#
# After merging a change resulting in generating a new image to the
# main repository, it's recommended to remove the image from the source
# repository's container registry, so that the image from the main
# repository's registry will be used there as well.
variables:
UPSTREAM_REPO: mesa/mesa
DEBIAN_TAG: "amd64-2019-11-13-2"
DEBIAN_TEST_TAG: "amd64-test-2019-11-15"
DEBIAN_ARM64_TAG: "arm64v8-2019-11-13"
DEBIAN_ARM64_TEST_TAG: "arm64v8-test-2019-11-12-2"
STRETCH_TAG: "2019-09-18"
DEBIAN_VERSION: buster-slim
STRETCH_VERSION: stretch-slim
DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
DEBIAN_TEST_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TEST_TAG"
DEBIAN_ARM64_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TAG"
DEBIAN_ARM64_TEST_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TEST_TAG"
STRETCH_IMAGE: "$CI_REGISTRY_IMAGE/debian/$STRETCH_VERSION:$STRETCH_TAG"
include:
- project: 'wayland/ci-templates'
# Must be the same as in .gitlab-ci/lava-gitlab-ci.yml
ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c
ref: f69acac60d5dde0410124fd5674764600821b7a6
file: '/templates/debian.yml'
include:
@ -82,57 +56,97 @@ stages:
# https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
- artifacts
# Build the normal CI native and cross-build docker images.
# Build the "normal" (non-LAVA) CI docker images.
#
# DEBIAN_TAG is the tag of the docker image used by later stage jobs. If the
# image doesn't exist yet, the container stage job generates it.
#
# In order to generate a new image, one should generally change the tag.
# While removing the image from the registry would also work, that's not
# recommended except for ephemeral images during development: Replacing
# an image after a significant amount of time might pull in newer
# versions of gcc/clang or other packages, which might break the build
# with older commits using the same tag.
#
# After merging a change resulting in generating a new image to the
# main repository, it's recommended to remove the image from the source
# repository's container registry, so that the image from the main
# repository's registry will be used there as well.
.container:
stage: container
extends:
- .ci-run-policy
variables:
DEBIAN_VERSION: buster-slim
REPO_SUFFIX: $CI_JOB_NAME
DEBIAN_EXEC: 'bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
# no need to pull the whole repo to build the container image
GIT_STRATEGY: none
# Debian 10 based x86 build image
x86_build:
extends:
- .debian@container-ifnot-exists
- .container
variables:
DEBIAN_TAG: &x86_build "2019-11-13"
.use-x86_build:
image: $DEBIAN_IMAGE
variables:
TAG: *x86_build
image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG"
needs:
- x86_build
# Debian 10 based x86 test image
x86_test:
extends: x86_build
variables:
DEBIAN_TAG: "$DEBIAN_TEST_TAG"
DEBIAN_TAG: &x86_test "2019-11-15"
# Debian 9 based x86 build image (old LLVM)
x86_build_old:
extends: x86_build
variables:
DEBIAN_TAG: $STRETCH_TAG
DEBIAN_VERSION: $STRETCH_VERSION
DEBIAN_IMAGE: $STRETCH_IMAGE
DEBIAN_TAG: &x86_build_old "2019-09-18"
DEBIAN_VERSION: stretch-slim
.use-x86_build_old:
image: $STRETCH_IMAGE
variables:
TAG: *x86_build_old
image: "$CI_REGISTRY_IMAGE/debian/x86_build_old:$TAG"
needs:
- x86_build_old
# Debian 10 based ARM build image
arm_build:
extends:
- .debian@container-ifnot-exists@arm64v8
- .container
variables:
DEBIAN_TAG: "$DEBIAN_ARM64_TAG"
DEBIAN_TAG: &arm_build "2019-11-13"
arm_test:
extends:
- .debian@container-ifnot-exists@arm64v8
- .container
.use-arm_build:
variables:
DEBIAN_TAG: "$DEBIAN_ARM64_TEST_TAG"
TAG: *arm_build
image: "$CI_REGISTRY_IMAGE/debian/arm_build:$TAG"
needs:
- arm_build
# Debian 10 based ARM test image
arm_test:
extends: arm_build
variables:
DEBIAN_TAG: &arm_test "2019-11-12"
.use-arm_test:
variables:
TAG: *arm_test
image: "$CI_REGISTRY_IMAGE/debian/arm_test:$TAG"
needs:
- meson-arm64
- arm_test
# BUILD
@ -249,15 +263,14 @@ meson-main:
-D gallium-nine=false
.meson-arm:
extends: .meson-cross
image: $DEBIAN_ARM64_IMAGE
extends:
- .meson-cross
- .use-arm_build
variables:
VULKAN_DRIVERS: freedreno
GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
EXTRA_OPTION: >
-D I-love-half-baked-turnips=true
needs:
- arm_build
tags:
- aarch64
@ -454,10 +467,11 @@ scons-old-llvm:
.test:
extends:
- .ci-run-policy
image: $DEBIAN_TEST_IMAGE
stage: test
variables:
GIT_STRATEGY: none # testing doesn't build anything from source
TAG: *x86_test
image: "$CI_REGISTRY_IMAGE/debian/x86_test:$TAG"
before_script:
# Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
- rm -rf install
@ -549,8 +563,9 @@ test-softpipe-gles31:
extends: test-softpipe-gles2
arm64_a630_gles2:
extends: .deqp-test
image: $DEBIAN_ARM64_TEST_IMAGE
extends:
- .deqp-test
- .use-arm_test
variables:
DEQP_VER: gles2
DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
@ -560,9 +575,6 @@ arm64_a630_gles2:
- mesa-cheza
dependencies:
- meson-arm64
needs:
- meson-arm64
- arm_test
arm64_a630_gles31:
extends: arm64_a630_gles2

View File

@ -1,11 +1,7 @@
variables:
LAVA_DEBIAN_VERSION: testing-slim
LAVA_IMAGE_TAG: "lava-2019-10-23-1"
include:
- project: 'wayland/ci-templates'
# Must be the same as in .gitlab-ci.yml
ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c
ref: f69acac60d5dde0410124fd5674764600821b7a6
file: '/templates/debian.yml'
# When to automatically run the CI
@ -28,7 +24,8 @@ include:
- .container
- .lava-ci-run-policy
variables:
DEBIAN_TAG: '${DEBIAN_ARCH}-${LAVA_IMAGE_TAG}'
REPO_SUFFIX: ${CI_JOB_NAME}
DEBIAN_TAG: &debian_tag '2019-10-23'
DEBIAN_EXEC: 'DEBIAN_ARCH=${DEBIAN_ARCH}
GCC_ARCH=${GCC_ARCH}
KERNEL_ARCH=${KERNEL_ARCH}
@ -37,7 +34,7 @@ include:
DEVICE_TREES="${DEVICE_TREES}"
KERNEL_IMAGE_NAME=${KERNEL_IMAGE_NAME}
bash .gitlab-ci/container/lava_arm.sh'
DEBIAN_VERSION: ${LAVA_DEBIAN_VERSION}
DEBIAN_VERSION: testing-slim
lava_armhf:
extends: .lava-container
@ -62,7 +59,9 @@ lava_arm64:
KERNEL_IMAGE_NAME: "Image"
.lava-build:
image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:$DEBIAN_ARCH-$LAVA_IMAGE_TAG
variables:
TAG: *debian_tag
image: $CI_REGISTRY_IMAGE/debian/lava_${DEBIAN_ARCH}:$TAG
extends:
- .build-linux
- .lava-ci-run-policy
@ -146,6 +145,8 @@ lava-build:arm64:
stage: test
variables:
GIT_STRATEGY: none # testing doesn't build anything from source
TAG: *debian_tag
image: $CI_REGISTRY_IMAGE/debian/lava_${DEBIAN_ARCH}:$TAG
script:
- lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp-$DEVICE_TYPE.yml`
- echo $lava_job_id
@ -160,7 +161,8 @@ lava-build:arm64:
- results/
.lava-test:armhf:
image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:armhf-$LAVA_IMAGE_TAG
variables:
DEBIAN_ARCH: armhf
extends: .lava-test
needs:
- lava_armhf
@ -169,7 +171,8 @@ lava-build:arm64:
- lava-build:armhf
.lava-test:arm64:
image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:arm64-$LAVA_IMAGE_TAG
variables:
DEBIAN_ARCH: arm64
extends: .lava-test
needs:
- lava_arm64