gitlab-ci.yml revision b8e80941
1variables: 2 DOCKER_DRIVER: overlay2 3 4stages: 5 - build-container 6 - build 7 - test 8 9# Build Docker image with deqp, the rootfs and the build deps for Mesa 10build-container: 11 stage: build-container 12 when: always 13 services: 14 - docker:dind 15 image: docker:latest 16 before_script: 17 - mkdir -p results 18 script: 19 - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY 20 - time docker pull $CI_REGISTRY_IMAGE:latest || true 21 - time docker build 22 -t $CI_REGISTRY_IMAGE 23 --cache-from $CI_REGISTRY_IMAGE:latest 24 src/gallium/drivers/panfrost/ci 25 2>&1 | tee results/docker_build_log.txt 26 - time docker push $CI_REGISTRY_IMAGE:latest 2>&1 | tee results/docker_push_log.txt 27 28 - docker history $CI_REGISTRY_IMAGE:latest 29 30 - "grep -o 'digest: sha256:[0-9a-f]\\+' results/docker_push_log.txt | 31 cut -f 2 -d ' ' | 32 tee results/docker_image_digest.txt" 33 artifacts: 34 when: always 35 paths: 36 - results/ 37 38build: 39 stage: build 40 image: $CI_REGISTRY_IMAGE:latest 41 cache: 42 paths: 43 - ccache 44 before_script: 45 - mkdir -p results mesa-build 46 - mkdir -p ccache 47 script: 48 - export CCACHE_BASEDIR=$CI_PROJECT_DIR 49 - export CCACHE_DIR=$CI_PROJECT_DIR/ccache 50 - export PATH="/usr/lib/ccache:$PATH" 51 - ccache -s 52 53 - /usr/share/meson/debcrossgen --arch arm64 -o /tmp/cross_file.txt 54 - meson . mesa-build 55 --cross-file /tmp/cross_file.txt 56 --libdir /artifacts/rootfs/mesa/lib/aarch64-linux-gnu 57 --buildtype release 58 -Dgallium-drivers=kmsro,panfrost 59 -Ddri-drivers= 60 -Dprefix=/artifacts/rootfs/mesa 61 - ninja -C mesa-build install 62 - du -sh /artifacts/rootfs/mesa/* 63 - rm -rf /artifacts/rootfs/mesa/include 64 - cp src/gallium/drivers/panfrost/ci/deqp-runner.sh /artifacts/rootfs/deqp/. 65 - du -sh /artifacts/rootfs/deqp/* 66 - find /artifacts/rootfs/ -type f -printf "%s\t%p\n" | sort -n 67 - cd /artifacts/rootfs/ ; find -H | cpio -H newc -v -o | gzip -c - > $CI_PROJECT_DIR/results/panfrost-rootfs.cpio.gz 68 - cp /artifacts/Image /artifacts/rk3399-gru-kevin.dtb $CI_PROJECT_DIR/results/. 69 70 - cd $CI_PROJECT_DIR 71 - src/gallium/drivers/panfrost/ci/generate_lava.py 72 --template src/gallium/drivers/panfrost/ci/lava-deqp.yml.jinja2 73 --base-artifacts-url $CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/results 74 > results/lava-deqp.yml 75 artifacts: 76 when: always 77 paths: 78 - results/ 79 80test: 81 stage: test 82 image: $CI_REGISTRY_IMAGE:latest 83 script: 84 - mkdir -p ~/.config/ 85 - | 86 echo "default: 87 uri: https://lava.collabora.co.uk/RPC2 88 timeout: 120 89 username: jenkins-fdo 90 token: $LAVA_TOKEN 91 " > ~/.config/lavacli.yaml 92 - lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp.yml` 93 - echo $lava_job_id 94 - lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee results/lava-deqp-$lava_job_id.log 95 - lavacli jobs show $lava_job_id 96 - curl "https://lava.collabora.co.uk/results/$lava_job_id/csv?user=jenkins-fdo&token=$LAVA_TOKEN" > raw_results.csv 97 - cat raw_results.csv | csvcut -c 12,3 | grep dEQP-GLES2 | sort > results/results-$lava_job_id.csv 98 99 # FIXME: Remove flip-flops from comparison files 100 - sed -i '/dEQP-GLES2.functional.shaders.invariance.highp.loop_4/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 101 - sed -i '/dEQP-GLES2.functional.texture.units.2_units.mixed.1/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 102 - sed -i '/dEQP-GLES2.functional.texture.units.4_units.mixed.5/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 103 - sed -i '/dEQP-GLES2.functional.texture.units.all_units.only_cube.7/d' src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv 104 105 - PASSED=$(grep pass$ results/results-$lava_job_id.csv | wc -l) 106 - FAILED=$(grep fail$ results/results-$lava_job_id.csv | wc -l) 107 - TOTAL=$(wc -l < results/results-$lava_job_id.csv) 108 - 'echo "Passed: $PASSED ($(expr $PASSED \* 100 / $TOTAL)%)"' 109 - 'echo "Failed: $FAILED ($(expr $FAILED \* 100 / $TOTAL)%)"' 110 - 'echo "Total: $TOTAL"' 111 112 - sed '/,pass/d' results/results-$lava_job_id.csv | sed 's/,fail//' > results/failures-$lava_job_id.txt 113 - diff -u src/gallium/drivers/panfrost/ci/expected-failures.txt results/failures-$lava_job_id.txt 114 artifacts: 115 when: always 116 paths: 117 - results/