X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=.gitlab-ci%2Flava-gitlab-ci.yml;h=4916904d8f8975df556256ccbfb5d98ec9397d99;hb=347840cf43624bdb2a5ce820e1001842e3f75ded;hp=e3b3110985778726263c71736304444ae4b8926d;hpb=427d0c4b6a17d16751e0b6ad1237abc3d546fe4a;p=mesa.git diff --git a/.gitlab-ci/lava-gitlab-ci.yml b/.gitlab-ci/lava-gitlab-ci.yml index e3b31109857..4916904d8f8 100644 --- a/.gitlab-ci/lava-gitlab-ci.yml +++ b/.gitlab-ci/lava-gitlab-ci.yml @@ -1,201 +1,300 @@ variables: - LAVA_DEBIAN_VERSION: testing-slim - LAVA_IMAGE_TAG: "lava-2019-10-23-1" - -include: - - project: 'wayland/ci-templates' - ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c - file: '/templates/debian.yml' - -# When to automatically run the CI -.lava-ci-run-policy: - only: - - branches@mesa/mesa - - merge_requests - - /^lava-ci([-/].*)?$/ - retry: - max: 2 - when: - - runner_system_failure - -# Build Docker image with deqp, the rootfs and the build deps for Mesa -.lava-container: - extends: - - .debian@container-ifnot-exists - - .container - - .lava-ci-run-policy - variables: - DEBIAN_TAG: '${DEBIAN_ARCH}-${LAVA_IMAGE_TAG}' - DEBIAN_EXEC: 'DEBIAN_ARCH=${DEBIAN_ARCH} - GCC_ARCH=${GCC_ARCH} - KERNEL_ARCH=${KERNEL_ARCH} - VOLT_ARCH=${VOLT_ARCH} - DEFCONFIG=${DEFCONFIG} - DEVICE_TREES="${DEVICE_TREES}" - KERNEL_IMAGE_NAME=${KERNEL_IMAGE_NAME} - bash .gitlab-ci/lava-debian-install.sh' - DEBIAN_VERSION: ${LAVA_DEBIAN_VERSION} - -lava-container:armhf: - extends: .lava-container - variables: - DEBIAN_ARCH: "armhf" - GCC_ARCH: "arm-linux-gnueabihf" - KERNEL_ARCH: "arm" - VOLT_ARCH: "armhf" - DEFCONFIG: "arch/arm/configs/multi_v7_defconfig" - DEVICE_TREES: "arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb" - KERNEL_IMAGE_NAME: "zImage" + DISTRIBUTION_TAG: "2020-08-03-nfs-2" -lava-container:arm64: - extends: .lava-container +.kernel+rootfs: + stage: container-2 + extends: + - .ci-run-policy variables: - DEBIAN_ARCH: "arm64" - GCC_ARCH: "aarch64-linux-gnu" - KERNEL_ARCH: "arm64" - VOLT_ARCH: "aarch64" - DEFCONFIG: "arch/arm64/configs/defconfig" - DEVICE_TREES: "arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb" - KERNEL_IMAGE_NAME: "Image" - -.lava-build: - image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:$DEBIAN_ARCH-$LAVA_IMAGE_TAG - extends: - - .build-linux - - .lava-ci-run-policy + GIT_STRATEGY: fetch + KERNEL_URL: "https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz" + UPLOAD_FOR_LAVA: 1 script: - # Build Mesa - - mkdir -p results mesa-build - - mkdir -p ccache - - /usr/share/meson/debcrossgen --arch ${DEBIAN_ARCH} -o /tmp/cross_file.txt - - meson . mesa-build - --cross-file /tmp/cross_file.txt - --libdir /artifacts/rootfs/mesa/lib/ - --buildtype debugoptimized - -D gallium-drivers=kmsro,panfrost,lima - -D dri-drivers= - -D prefix=/artifacts/rootfs/mesa - -D glx=disabled - -D gbm=false - -D egl=true - -D platforms=surfaceless - -D osmesa=none - -D dri3=false - -D gallium-vdpau=false - -D gallium-xvmc=false - -D gallium-omx=disabled - -D gallium-va=false - -D gallium-xa=false - -D gallium-nine=false - -D llvm=false - - ninja -C mesa-build -j8 - - ninja -C mesa-build install - - find /artifacts/rootfs/mesa/lib -name \*.so -exec ${GCC_ARCH}-strip {} \; - - - du -sh /artifacts/rootfs/mesa/* - - rm -rf /artifacts/rootfs/mesa/include - - # Pack rootfs - - cp .gitlab-ci/lava-deqp-runner.sh /artifacts/rootfs/deqp/. - - cp .gitlab-ci/deqp-*-fails.txt /artifacts/rootfs/deqp/. - - cp .gitlab-ci/deqp-*-skips.txt /artifacts/rootfs/deqp/. - - du -sh /artifacts/rootfs/deqp/* - - find /artifacts/rootfs/ -type f -printf "%s\t%p\n" | sort -n - - pushd /artifacts/rootfs/ ; find -H | cpio -H newc -v -o | gzip -c - > $CI_PROJECT_DIR/results/lava-rootfs-${DEBIAN_ARCH}.cpio.gz; popd - - # Copy kernel and DT - - cp /artifacts/${KERNEL_IMAGE_NAME} /artifacts/*.dtb $CI_PROJECT_DIR/results/. - - # Generate LAVA job - - cd $CI_PROJECT_DIR - - .gitlab-ci/generate_lava.py - --template .gitlab-ci/lava-deqp.yml.jinja2 - --arch ${DEBIAN_ARCH} - --base-artifacts-url $CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/results - --device-types ${DEVICE_TYPES} - --kernel-image-name ${KERNEL_IMAGE_NAME} - artifacts: - when: always - paths: - - results/ + - .gitlab-ci/container/lava_build.sh -lava-build:armhf: - extends: .lava-build - needs: ["lava-container:armhf"] +kernel+rootfs_amd64: + extends: + - .use-x86_build-base + - .kernel+rootfs + image: "$CI_REGISTRY_IMAGE/debian/x86_build-base:$BASE_TAG" variables: - DEBIAN_ARCH: "armhf" - GCC_ARCH: "arm-linux-gnueabihf" - DEVICE_TYPES: "rk3288-veyron-jaq sun8i-h3-libretech-all-h3-cc" - KERNEL_IMAGE_NAME: "zImage" + DEBIAN_ARCH: "amd64" -lava-build:arm64: - extends: .lava-build - needs: ["lava-container:arm64"] +kernel+rootfs_arm64: + extends: + - .use-arm_build + - .kernel+rootfs + tags: + - aarch64 variables: DEBIAN_ARCH: "arm64" - GCC_ARCH: "aarch64-linux-gnu" - DEVICE_TYPES: "rk3399-gru-kevin meson-gxl-s905x-libretech-cc" - KERNEL_IMAGE_NAME: "Image" + +kernel+rootfs_armhf: + extends: + - kernel+rootfs_arm64 + variables: + DEBIAN_ARCH: "armhf" .lava-test: extends: - - .test - - .lava-ci-run-policy + - .ci-run-policy + # Cancel job if a newer commit is pushed to the same branch + interruptible: true + variables: + GIT_STRATEGY: none # testing doesn't build anything from source + ENV_VARS: "DEQP_PARALLEL=6" + FIXED_ENV_VARS: "CI_PIPELINE_ID=${CI_PIPELINE_ID} CI_JOB_ID=${CI_JOB_ID} CI_PROJECT_PATH=${CI_PROJECT_PATH} CI_JOB_JWT=${CI_JOB_JWT} TRACIE_NO_UNIT_TESTS=1 TRACIE_UPLOAD_TO_MINIO=1" + DEQP_VERSION: gles2 + ARTIFACTS_PREFIX: "https://minio-packet.freedesktop.org/mesa-lava/" + MESA_URL: "https://minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}/mesa-${ARCH}.tar.gz" script: - - lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp-$DEVICE_TYPE.yml` + # Try to use the kernel and rootfs built in mainline first, to save cycles + - > + if wget -q --method=HEAD "${ARTIFACTS_PREFIX}/mesa/mesa/${DISTRIBUTION_TAG}/${ARCH}/done"; then + ARTIFACTS_URL="${ARTIFACTS_PREFIX}/mesa/mesa/${DISTRIBUTION_TAG}/${ARCH}" + else + ARTIFACTS_URL="${ARTIFACTS_PREFIX}/${CI_PROJECT_PATH}/${DISTRIBUTION_TAG}/${ARCH}" + fi + - > + artifacts/generate_lava.py \ + --template artifacts/lava-${TEST_SUITE}.yml.jinja2 \ + --pipeline-info "$CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \ + --base-artifacts-url ${ARTIFACTS_URL} \ + --mesa-url ${MESA_URL} \ + --device-type ${DEVICE_TYPE} \ + --dtb ${DTB} \ + --env-vars "${ENV_VARS} ${FIXED_ENV_VARS}" \ + --deqp-version ${DEQP_VERSION} \ + --kernel-image-name ${KERNEL_IMAGE_NAME} \ + --kernel-image-type "${KERNEL_IMAGE_TYPE}" \ + --gpu-version ${GPU_VERSION} \ + --boot-method ${BOOT_METHOD} \ + --lava-tags "${LAVA_TAGS}" \ + --ci-node-index "${CI_NODE_INDEX}" \ + --ci-node-total "${CI_NODE_TOTAL}" + - lava_job_id=`lavacli jobs submit lava-${TEST_SUITE}.yml` || lavacli jobs submit lava-${TEST_SUITE}.yml - echo $lava_job_id - - lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee results/lava-deqp-$lava_job_id.log + - rm -rf artifacts/* + - cp lava-${TEST_SUITE}.yml artifacts/. + - lavacli jobs logs $lava_job_id | tee artifacts/lava-${TEST_SUITE}-$lava_job_id.log - lavacli jobs show $lava_job_id - - result=`lavacli results $lava_job_id 0_deqp deqp | head -1` + - result=`lavacli results $lava_job_id 0_${TEST_SUITE} ${TEST_SUITE} | head -1` - echo $result - '[[ "$result" == "pass" ]]' artifacts: + name: "mesa_${CI_JOB_NAME}" when: always paths: - - results/ + - artifacts/ .lava-test:armhf: - image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:armhf-$LAVA_IMAGE_TAG - extends: .lava-test + variables: + ARCH: armhf + KERNEL_IMAGE_NAME: zImage + KERNEL_IMAGE_TYPE: "type:\ zimage" + BOOT_METHOD: u-boot + TEST_SUITE: "deqp" + extends: + - .lava-test + - .use-arm_build needs: - - lava-container:armhf - - lava-build:armhf - dependencies: - - lava-build:armhf + - kernel+rootfs_armhf + - meson-armhf .lava-test:arm64: - image: $CI_REGISTRY_IMAGE/debian/$LAVA_DEBIAN_VERSION:arm64-$LAVA_IMAGE_TAG - extends: .lava-test - needs: - - lava-container:arm64 - - lava-build:arm64 + variables: + ARCH: arm64 + KERNEL_IMAGE_NAME: Image + KERNEL_IMAGE_TYPE: "type:\ image" + BOOT_METHOD: u-boot + TEST_SUITE: "deqp" + extends: + - .lava-test + - .use-arm_build dependencies: - - lava-build:arm64 + - meson-arm64 + needs: + - kernel+rootfs_arm64 + - meson-arm64 + +.lava-test:amd64: + variables: + ARCH: amd64 + KERNEL_IMAGE_NAME: bzImage + KERNEL_IMAGE_TYPE: "type:\ zimage" + BOOT_METHOD: u-boot + TEST_SUITE: "deqp" + extends: + - .lava-test + - .use-arm_build + needs: + - kernel+rootfs_amd64 + - meson-testing + +.lava-traces:amd64: + variables: + TEST_SUITE: "tracie" + extends: + - .lava-test:amd64 + +.lava-traces:armhf: + variables: + TEST_SUITE: "tracie" + extends: + - .lava-test:armhf + +.lava-traces:arm64: + variables: + TEST_SUITE: "tracie" + extends: + - .lava-test:arm64 + +.panfrost-t720-gles2:arm64: + extends: + - .lava-test:arm64 + - .panfrost-rules + variables: + DEVICE_TYPE: sun50i-h6-pine-h64 + DTB: ${DEVICE_TYPE} + GPU_VERSION: panfrost-t720 + ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T720" + tags: + - mesa-ci-aarch64-lava-collabora + +.panfrost-t760-gles2:armhf: + extends: + - .lava-test:armhf + - .panfrost-rules + variables: + DEVICE_TYPE: rk3288-veyron-jaq + DTB: ${DEVICE_TYPE} + GPU_VERSION: panfrost-t760 + BOOT_METHOD: depthcharge + KERNEL_IMAGE_TYPE: "" + ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T760" + tags: + - mesa-ci-aarch64-lava-collabora -panfrost-t760-test:armhf: - extends: .lava-test:armhf +.panfrost-t760-traces:armhf: + extends: + - .lava-traces:armhf + - .panfrost-rules variables: DEVICE_TYPE: rk3288-veyron-jaq + DTB: ${DEVICE_TYPE} + GPU_VERSION: panfrost-t760 + BOOT_METHOD: depthcharge + KERNEL_IMAGE_TYPE: "" + ENV_VARS: "PAN_MESA_DEBUG=deqp MESA_GLES_VERSION_OVERRIDE=3.1 MESA_GL_VERSION_OVERRIDE=3.3 MESA_GLSL_VERSION_OVERRIDE=330" tags: - - lava-rk3288-veyron-jaq + - mesa-ci-aarch64-lava-collabora -panfrost-t860-test:arm64: - extends: .lava-test:arm64 +.lava-rk3399-gru-kevin: + extends: + - .panfrost-rules variables: DEVICE_TYPE: rk3399-gru-kevin + DTB: ${DEVICE_TYPE} + GPU_VERSION: panfrost-t860 + BOOT_METHOD: depthcharge + KERNEL_IMAGE_TYPE: "" tags: - - lava-rk3399-gru-kevin + - mesa-ci-aarch64-lava-collabora -.lima-test:armhf: - extends: .lava-test:armhf +panfrost-t860-gles2:arm64: + extends: + - .lava-test:arm64 + - .lava-rk3399-gru-kevin + variables: + ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860" + +panfrost-t860-gles3:arm64: + parallel: 2 + extends: + - .lava-test:arm64 + - .lava-rk3399-gru-kevin + variables: + DEQP_VERSION: gles3 + ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860" + +panfrost-t860-traces:arm64: + extends: + - .lava-traces:arm64 + - .lava-rk3399-gru-kevin + variables: + ENV_VARS: "PAN_MESA_DEBUG=deqp MESA_GLES_VERSION_OVERRIDE=3.1 MESA_GL_VERSION_OVERRIDE=3.3 MESA_GLSL_VERSION_OVERRIDE=330" + +.panfrost-t820-gles2:arm64: + extends: + - .lava-test:arm64 + - .panfrost-rules + variables: + DEVICE_TYPE: meson-gxm-khadas-vim2 + DTB: ${DEVICE_TYPE} + GPU_VERSION: panfrost-t820 + LAVA_TAGS: panfrost + ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T820" + tags: + - mesa-ci-aarch64-lava-baylibre + +.lima-mali400-test:armhf: + parallel: 2 + extends: + - .lava-test:armhf + - .lima-rules variables: DEVICE_TYPE: sun8i-h3-libretech-all-h3-cc + DTB: ${DEVICE_TYPE} + GPU_VERSION: lima + ENV_VARS: "DEQP_PARALLEL=3 DEQP_EXPECTED_RENDERER=Mali400" tags: - - lava-sun8i-h3-libretech-all-h3-cc + - mesa-ci-aarch64-lava-baylibre -.lima-test:arm64: - extends: .lava-test:arm64 +.lima-mali450-test:arm64: + extends: + - .lava-test:arm64 + - .lima-rules variables: DEVICE_TYPE: meson-gxl-s905x-libretech-cc + DTB: ${DEVICE_TYPE} + GPU_VERSION: lima + ENV_VARS: "DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=Mali450" + tags: + - mesa-ci-aarch64-lava-baylibre + +# Commented out while waiting for more DUTs to come online +.radeonsi-stoney-gles2:amd64: + extends: + - .lava-test:amd64 + - .radeonsi-rules + variables: + DEVICE_TYPE: hp-11A-G6-EE-grunt + DTB: "" + GPU_VERSION: radeonsi-stoney + BOOT_METHOD: depthcharge + KERNEL_IMAGE_TYPE: "" + ENV_VARS: "DEQP_PARALLEL=4 DEQP_EXPECTED_RENDERER=STONEY NIR_VALIDATE=0" + tags: + - mesa-ci-aarch64-lava-collabora + +# Commented out while waiting for more DUTs to come online +.radeonsi-stoney-gles3:amd64: + extends: + - .radeonsi-stoney-gles2:amd64 + variables: + DEQP_VERSION: gles3 + tags: + - mesa-ci-aarch64-lava-collabora + +radeonsi-stoney-traces:amd64: + extends: + - .lava-traces:amd64 + - .radeonsi-rules + variables: + DEVICE_TYPE: hp-11A-G6-EE-grunt + DTB: "" + GPU_VERSION: radeonsi-stoney + BOOT_METHOD: depthcharge + KERNEL_IMAGE_TYPE: "" tags: - - lava-meson-gxl-s905x-libretech-cc + - mesa-ci-aarch64-lava-collabora