This removes the dependency on an externally generated docker image, and should make it easier to update the docker image or make other changes related to it. This is based on Debian testing, because I'm most familiar with Debian. But it should be easy to base it on another distro. v2: * Use kaniko instead of docker-in-docker for image generation, so it can also work in unprivileged runners. * Drop piglit.conf & tetexec.cfg overrides, just make sure the files in the image work.
72 lines
2.6 KiB
YAML
72 lines
2.6 KiB
YAML
# IMAGE_TAG is the tag of the docker image used for the build jobs. If the
|
|
# image doesn't exist yet, the docker-image 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:
|
|
IMAGE_TAG: "debian-testing-20181217"
|
|
IMAGE_LOCAL: "$CI_REGISTRY_IMAGE:$IMAGE_TAG"
|
|
IMAGE_MAIN: "registry.freedesktop.org/xorg/$CI_PROJECT_NAME:$IMAGE_TAG"
|
|
|
|
stages:
|
|
- docker-image
|
|
- build-and-test
|
|
|
|
debian-testing:
|
|
stage: docker-image
|
|
image:
|
|
name: gcr.io/kaniko-project/executor:debug
|
|
entrypoint: [""]
|
|
script:
|
|
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
|
|
- mkdir kaniko-context
|
|
- |
|
|
echo "FROM $IMAGE_LOCAL" > kaniko-context/Dockerfile
|
|
# If the image exists in the local registry, skip to the build-and-test job
|
|
set +e
|
|
set -x
|
|
/kaniko/executor --context kaniko-context --no-push && exit 0
|
|
set +x
|
|
set -e
|
|
- |
|
|
echo "FROM $IMAGE_MAIN" > kaniko-context/Dockerfile
|
|
# Try to re-use the image from the main repository's registry, and if
|
|
# that fails, generate a local image from scratch
|
|
set +e
|
|
set -x
|
|
/kaniko/executor --context kaniko-context --destination $IMAGE_LOCAL && exit 0
|
|
set +x
|
|
set -e
|
|
- /kaniko/executor --context $CI_PROJECT_DIR/.gitlab-ci --destination $IMAGE_LOCAL
|
|
|
|
build-and-test:
|
|
stage: build-and-test
|
|
image: $IMAGE_LOCAL
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- build/test/piglit-results/
|
|
variables:
|
|
PIGLIT_DIR: /root/piglit
|
|
XTEST_DIR: /root/xts
|
|
script:
|
|
- meson -Dprefix=/usr build/
|
|
- |
|
|
ninja -C build/ install
|
|
set +e
|
|
set -x
|
|
ninja -C build/ test
|
|
status=$?
|
|
cat build/meson-logs/testlog.txt
|
|
cat build/test/piglit-results/xvfb/long-summary || :
|
|
exit $status
|