+# 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
+ rules:
+ # Run pipeline by default for merge requests changing files affecting it
+ - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
+ changes:
+ - VERSION
+ - bin/**/*
+ # GitLab CI
+ - .gitlab-ci.yml
+ - .gitlab-ci/**/*
+ # Meson
+ - meson*
+ - build-support/**/*
+ - subprojects/**/*
+ # SCons
+ - SConstruct
+ - scons/**/*
+ - common.py
+ # Source code
+ - include/**/*
+ - src/**/*
+ when: on_success
+ # Always run pipeline by default in the main project
+ - if: '$CI_PROJECT_PATH == "mesa/mesa"'
+ when: on_success
+ # Otherwise, allow triggering jobs manually
+ - when: manual
+ 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:
+ variables:
+ TAG: *x86_build
+ image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG"
+ needs:
+ - x86_build