1*4882a593Smuzhiyun# IMAGE_TAG is the tag of the docker image used for the build jobs. If the 2*4882a593Smuzhiyun# image doesn't exist yet, the docker-image stage generates it. 3*4882a593Smuzhiyun# 4*4882a593Smuzhiyun# In order to generate a new image, one should generally change the tag. 5*4882a593Smuzhiyun# While removing the image from the registry would also work, that's not 6*4882a593Smuzhiyun# recommended except for ephemeral images during development: Replacing an 7*4882a593Smuzhiyun# image after a significant amount of time might pull in newer versions of 8*4882a593Smuzhiyun# gcc/clang or other packages, which might break the build with older commits 9*4882a593Smuzhiyun# using the same tag. 10*4882a593Smuzhiyun# 11*4882a593Smuzhiyun# After merging a change resulting in generating a new image to the main 12*4882a593Smuzhiyun# repository, it's recommended to remove the image from the source repository's 13*4882a593Smuzhiyun# container registry, so that the image from the main repository's registry 14*4882a593Smuzhiyun# will be used there as well. 15*4882a593Smuzhiyunvariables: 16*4882a593Smuzhiyun IMAGE_TAG: "debian-testing-20190219" 17*4882a593Smuzhiyun IMAGE_LOCAL: "$CI_REGISTRY_IMAGE:$IMAGE_TAG" 18*4882a593Smuzhiyun IMAGE_MAIN: "registry.freedesktop.org/xorg/xserver:$IMAGE_TAG" 19*4882a593Smuzhiyun 20*4882a593Smuzhiyunstages: 21*4882a593Smuzhiyun - docker-image 22*4882a593Smuzhiyun - build-and-test 23*4882a593Smuzhiyun 24*4882a593Smuzhiyundebian-testing: 25*4882a593Smuzhiyun stage: docker-image 26*4882a593Smuzhiyun image: 27*4882a593Smuzhiyun name: gcr.io/kaniko-project/executor:debug 28*4882a593Smuzhiyun entrypoint: [""] 29*4882a593Smuzhiyun script: 30*4882a593Smuzhiyun - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json 31*4882a593Smuzhiyun - mkdir kaniko-context 32*4882a593Smuzhiyun - | 33*4882a593Smuzhiyun echo "FROM $IMAGE_LOCAL" > kaniko-context/Dockerfile 34*4882a593Smuzhiyun # If the image exists in the local registry, skip to the build-and-test job 35*4882a593Smuzhiyun set +e 36*4882a593Smuzhiyun set -x 37*4882a593Smuzhiyun /kaniko/executor --context kaniko-context --no-push && exit 0 38*4882a593Smuzhiyun set +x 39*4882a593Smuzhiyun set -e 40*4882a593Smuzhiyun - | 41*4882a593Smuzhiyun echo "FROM $IMAGE_MAIN" > kaniko-context/Dockerfile 42*4882a593Smuzhiyun # Try to re-use the image from the main repository's registry, and if 43*4882a593Smuzhiyun # that fails, generate a local image from scratch 44*4882a593Smuzhiyun set +e 45*4882a593Smuzhiyun set -x 46*4882a593Smuzhiyun /kaniko/executor --context kaniko-context --destination $IMAGE_LOCAL && exit 0 47*4882a593Smuzhiyun set +x 48*4882a593Smuzhiyun set -e 49*4882a593Smuzhiyun - /kaniko/executor --context $CI_PROJECT_DIR/.gitlab-ci --destination $IMAGE_LOCAL 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun.common-build-and-test: 52*4882a593Smuzhiyun stage: build-and-test 53*4882a593Smuzhiyun image: $IMAGE_LOCAL 54*4882a593Smuzhiyun artifacts: 55*4882a593Smuzhiyun when: on_failure 56*4882a593Smuzhiyun paths: 57*4882a593Smuzhiyun - build/test/piglit-results/ 58*4882a593Smuzhiyun cache: 59*4882a593Smuzhiyun paths: 60*4882a593Smuzhiyun - ccache/ 61*4882a593Smuzhiyun variables: 62*4882a593Smuzhiyun LC_ALL: C.UTF-8 63*4882a593Smuzhiyun before_script: 64*4882a593Smuzhiyun - export CCACHE_BASEDIR="$PWD" 65*4882a593Smuzhiyun - export CCACHE_DIR="$PWD/ccache" 66*4882a593Smuzhiyun - export CCACHE_COMPILERCHECK=content 67*4882a593Smuzhiyun - export PATH="/usr/lib/ccache:$PATH" 68*4882a593Smuzhiyun - ccache --zero-stats 69*4882a593Smuzhiyun - ccache --show-stats 70*4882a593Smuzhiyun after_script: 71*4882a593Smuzhiyun - CCACHE_DIR="$PWD/ccache" ccache --show-stats 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunautotools-build-and-test: 74*4882a593Smuzhiyun extends: .common-build-and-test 75*4882a593Smuzhiyun script: 76*4882a593Smuzhiyun - mkdir build/ 77*4882a593Smuzhiyun - cd build/ 78*4882a593Smuzhiyun - ../autogen.sh --prefix=/usr 79*4882a593Smuzhiyun - make -j$(nproc) distcheck 80*4882a593Smuzhiyun - | 81*4882a593Smuzhiyun export PIGLIT_DIR=/root/piglit XTEST_DIR=/root/xts 82*4882a593Smuzhiyun set +e 83*4882a593Smuzhiyun set -x 84*4882a593Smuzhiyun make -j$(nproc) check 85*4882a593Smuzhiyun status=$? 86*4882a593Smuzhiyun cat test/piglit-results/xvfb/long-summary || : 87*4882a593Smuzhiyun exit $status 88*4882a593Smuzhiyun 89*4882a593Smuzhiyunmeson-build-and-test: 90*4882a593Smuzhiyun extends: .common-build-and-test 91*4882a593Smuzhiyun variables: 92*4882a593Smuzhiyun PIGLIT_DIR: /root/piglit 93*4882a593Smuzhiyun XTEST_DIR: /root/xts 94*4882a593Smuzhiyun script: 95*4882a593Smuzhiyun - meson -Dprefix=/usr build/ 96*4882a593Smuzhiyun - | 97*4882a593Smuzhiyun ninja -C build/ install 98*4882a593Smuzhiyun set +e 99*4882a593Smuzhiyun set -x 100*4882a593Smuzhiyun ninja -C build/ test 101*4882a593Smuzhiyun status=$? 102*4882a593Smuzhiyun cat build/meson-logs/testlog.txt 103*4882a593Smuzhiyun cat build/test/piglit-results/xvfb/long-summary || : 104*4882a593Smuzhiyun exit $status 105