X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=.gitlab-ci%2Flava-gitlab-ci.yml;h=f7c600223ec0571020cb8af2b1bdb2461fb9c511;hb=7d5f4d3f709695dfdc599f16ee6077cdaa004bcc;hp=6ac3df3be58624e2ddc6cc922650756f64642fa0;hpb=d62dd8b0cb7f74ec43fac6f59c42178f4cf08c54;p=mesa.git diff --git a/.gitlab-ci/lava-gitlab-ci.yml b/.gitlab-ci/lava-gitlab-ci.yml index 6ac3df3be58..f7c600223ec 100644 --- a/.gitlab-ci/lava-gitlab-ci.yml +++ b/.gitlab-ci/lava-gitlab-ci.yml @@ -1,211 +1,303 @@ -include: - - project: 'wayland/ci-templates' - # Must be the same as in .gitlab-ci.yml - ref: 0a9bdd33a98f05af6761ab118b5074952242aab0 - file: '/templates/debian.yml' - -# Build Docker image with deqp, the rootfs and the build deps for Mesa -.lava-container: - extends: - - .debian@container-ifnot-exists - - .container - variables: - REPO_SUFFIX: ${CI_JOB_NAME} - DEBIAN_TAG: &debian_tag '2019-12-17-1' - 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/container/lava_arm.sh' - DEBIAN_VERSION: testing-slim - -lava_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" - -lava_arm64: - extends: .lava-container - 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 arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb" - KERNEL_IMAGE_NAME: "Image" +variables: + DISTRIBUTION_TAG: "2020-08-03-nfs-2" -.lava-build: - variables: - TAG: *debian_tag - image: $CI_REGISTRY_IMAGE/debian/lava_${DEBIAN_ARCH}:$TAG +.kernel+rootfs: + stage: container-2 extends: - - .build-linux - .ci-run-policy + variables: + 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 -j4 - - 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/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_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_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 sun50i-h6-pine-h64 meson-gxm-khadas-vim2" - KERNEL_IMAGE_NAME: "Image" + +kernel+rootfs_armhf: + extends: + - kernel+rootfs_arm64 + variables: + DEBIAN_ARCH: "armhf" .lava-test: extends: - .ci-run-policy - stage: test + # 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 - TAG: *debian_tag - DEQP_PARALLEL: 6 - NIR_VALIDATE: 0 - image: $CI_REGISTRY_IMAGE/debian/lava_${DEBIAN_ARCH}:$TAG + 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 DRIVER_NAME=${DRIVER_NAME}" + 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: variables: - DEBIAN_ARCH: armhf - extends: .lava-test + 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_armhf - - lava-build:armhf - dependencies: - - lava-build:armhf + - kernel+rootfs_armhf + - meson-armhf .lava-test:arm64: variables: - DEBIAN_ARCH: arm64 - extends: .lava-test - needs: - - lava_arm64 - - lava-build:arm64 + 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-test:arm64: - 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: - - lava-sun50i-h6-pine-h64 + - mesa-ci-aarch64-lava-collabora -panfrost-t760-test:armhf: - extends: .lava-test:armhf +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: - - lava-rk3288-veyron-jaq + - mesa-ci-aarch64-lava-collabora -panfrost-t860-test:arm64: - extends: .lava-test:arm64 +.panfrost-t760-traces:armhf: + extends: + - .lava-traces:armhf + - .panfrost-rules + variables: + DEVICE_TYPE: rk3288-veyron-jaq + DTB: ${DEVICE_TYPE} + GPU_VERSION: panfrost-t760 + DRIVER_NAME: panfrost + 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: + - mesa-ci-aarch64-lava-collabora + +.lava-rk3399-gru-kevin: + extends: + - .panfrost-rules variables: DEVICE_TYPE: rk3399-gru-kevin + DTB: ${DEVICE_TYPE} + GPU_VERSION: panfrost-t860 + DRIVER_NAME: panfrost + BOOT_METHOD: depthcharge + KERNEL_IMAGE_TYPE: "" tags: - - lava-rk3399-gru-kevin + - mesa-ci-aarch64-lava-collabora + +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-test:arm64: - extends: .lava-test:arm64 +.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: - - lava-meson-gxm-khadas-vim2 + - mesa-ci-aarch64-lava-baylibre -.lima-test:armhf: - extends: .lava-test:armhf +.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 + DRIVER_NAME: radeonsi + BOOT_METHOD: depthcharge + KERNEL_IMAGE_TYPE: "" tags: - - lava-meson-gxl-s905x-libretech-cc + - mesa-ci-aarch64-lava-collabora