diff options
Diffstat (limited to '.gitlab-ci/test/gitlab-ci.yml')
-rw-r--r-- | .gitlab-ci/test/gitlab-ci.yml | 426 |
1 files changed, 0 insertions, 426 deletions
diff --git a/.gitlab-ci/test/gitlab-ci.yml b/.gitlab-ci/test/gitlab-ci.yml deleted file mode 100644 index 6b1aa0b81bf..00000000000 --- a/.gitlab-ci/test/gitlab-ci.yml +++ /dev/null @@ -1,426 +0,0 @@ -.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 - before_script: - - !reference [default, before_script] - # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY - - rm -rf install - - tar -xf artifacts/install.tar - - section_start ldd_section "Checking ldd on driver build" - - LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \; - - section_end ldd_section - artifacts: - when: always - name: "mesa_${CI_JOB_NAME}" - paths: - - results/ - -.formatting-check: - # Cancel job if a newer commit is pushed to the same branch - interruptible: true - stage: lint - extends: - - .use-debian/x86_64_build - variables: - GIT_STRATEGY: fetch - timeout: 10m - script: - - git diff --color=always --exit-code # Fails if there are diffs - -rustfmt: - extends: - - .formatting-check - - .lint-rustfmt-rules - before_script: - - shopt -s globstar - - rustfmt --version - - rustfmt --verbose src/**/lib.rs - -clang-format: - extends: - - .formatting-check - - .lint-clang-format-rules - variables: - LLVM_VERSION: 15 - before_script: - - shopt -s globstar - # We need a meson build dir, but its config doesn't actually matter, so - # let's just use the default. - - meson setup build - - clang-format-${LLVM_VERSION} --version - - ninja -C build clang-format - -.test-gl: - extends: - - .test - - .use-debian/x86_64_test-gl - needs: - - debian/x86_64_test-gl - - debian-testing - - !reference [.required-for-hardware-jobs, needs] - variables: - DEBIAN_ARCH: amd64 - -.test-vk: - extends: - - .test - - .use-debian/x86_64_test-vk - needs: - - debian-testing - - debian/x86_64_test-vk - - !reference [.required-for-hardware-jobs, needs] - variables: - DEBIAN_ARCH: amd64 - -.test-cl: - extends: - - .test - - .use-debian/x86_64_test-gl - needs: - - debian/x86_64_test-gl - - !reference [.required-for-hardware-jobs, needs] - -.test-android: - extends: - - .test - - .use-debian/x86_64_test-android - variables: - S3_ARTIFACT_NAME: mesa-x86_64-android-debug - needs: - - job: debian-testing - artifacts: true # On the host we want the Linux build - - job: debian-android - artifacts: false # The Android build will be downloaded later - - job: debian/x86_64_test-android - artifacts: false - - !reference [.required-for-hardware-jobs, needs] - timeout: 20m - script: - - ./install/cuttlefish-runner.sh - artifacts: - paths: - - results/ - -.vkd3d-proton-test: - artifacts: - when: on_failure - name: "mesa_${CI_JOB_NAME}" - paths: - - results/vkd3d-proton.log - script: - - ./install/vkd3d-proton/run.sh - -.piglit-test: - artifacts: - name: "mesa_${CI_JOB_NAME}" - paths: - - results - reports: - junit: results/junit.xml - variables: - PIGLIT_NO_WINDOW: 1 - HWCI_TEST_SCRIPT: "/install/piglit/piglit-runner.sh" - script: - - install/piglit/piglit-runner.sh - -.piglit-traces-test: - extends: - - .piglit-test - artifacts: - when: on_failure - name: "mesa_${CI_JOB_NAME}" - reports: - junit: results/junit.xml - paths: - - results/ - exclude: - - results/*.shader_cache - variables: - PIGLIT_REPLAY_EXTRA_ARGS: --db-path ${CI_PROJECT_DIR}/replayer-db/ --minio_bucket=mesa-tracie-public --jwt-file=${CI_JOB_JWT_FILE} - # until we overcome Infrastructure issues, give traces extra 5 min before timeout - DEVICE_HANGING_TIMEOUT_SEC: 600 - script: - - section_start variables "Variables passed through:" - - install/common/generate-env.sh - - section_end variables - - install/piglit/piglit-traces.sh - -.deqp-test: - script: - - rm -rf results # Clear out old results if the docker container was cached - - ./install/deqp-runner.sh - artifacts: - exclude: - - results/*.shader_cache - reports: - junit: results/junit.xml - -.deqp-test-vk: - extends: - - .deqp-test - variables: - DEQP_VER: vk - -.fossilize-test: - script: - - ./install/fossilize-runner.sh - artifacts: - when: on_failure - name: "mesa_${CI_JOB_NAME}" - paths: - - results/ - -.baremetal-test: - extends: - - .test - # Cancel job if a newer commit is pushed to the same branch - interruptible: true - before_script: - - !reference [default, before_script] - # Use this instead of gitlab's artifacts download because it hits packet.net - # instead of fd.o. Set FDO_HTTP_CACHE_URI to an http cache for your test lab to - # improve it even more (see https://docs.mesa3d.org/ci/bare-metal.html for - # setup). - - section_start artifacts_download "Downloading artifacts from s3" - # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY - - rm -rf install - - (set -x; curl -L --retry 4 -f --retry-all-errors --retry-delay 60 ${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME}.tar.zst | tar --zstd -x) - - section_end artifacts_download - variables: - BM_ROOTFS: /rootfs-${DEBIAN_ARCH} - artifacts: - when: always - name: "mesa_${CI_JOB_NAME}" - paths: - - results/ - - serial*.txt - exclude: - - results/*.shader_cache - reports: - junit: results/junit.xml - -# ARM testing of bare-metal boards attached to an x86 gitlab-runner system -.baremetal-test-arm32: - extends: - - .baremetal-test - - .use-debian/arm32_test - variables: - DEBIAN_ARCH: armhf - S3_ARTIFACT_NAME: mesa-arm32-default-debugoptimized - needs: - - debian/arm32_test - - job: debian-arm32 - artifacts: false - - !reference [.required-for-hardware-jobs, needs] - -# ARM64 testing of bare-metal boards attached to an x86 gitlab-runner system -.baremetal-test-arm64: - extends: - - .baremetal-test - - .use-debian/arm64_test - variables: - DEBIAN_ARCH: arm64 - S3_ARTIFACT_NAME: mesa-arm64-default-debugoptimized - needs: - - debian/arm64_test - - job: debian-arm64 - artifacts: false - - !reference [.required-for-hardware-jobs, needs] - -# ARM32/64 testing of bare-metal boards attached to an x86 gitlab-runner system, using an asan mesa build -.baremetal-arm32-asan-test: - extends: - - .baremetal-test - - .use-debian/arm32_test - variables: - DEQP_RUNNER_OPTIONS: "--env LD_PRELOAD=libasan.so.8:/install/lib/libdlclose-skip.so" - S3_ARTIFACT_NAME: mesa-arm32-asan-debugoptimized - needs: - - debian/arm32_test - - job: debian-arm32-asan - artifacts: false - - !reference [.required-for-hardware-jobs, needs] - -.baremetal-arm64-asan-test: - extends: - - .baremetal-test - - .use-debian/arm64_test - variables: - DEQP_RUNNER_OPTIONS: "--env LD_PRELOAD=libasan.so.8:/install/lib/libdlclose-skip.so" - S3_ARTIFACT_NAME: mesa-arm64-asan-debugoptimized - needs: - - debian/arm64_test - - job: debian-arm64-asan - artifacts: false - - !reference [.required-for-hardware-jobs, needs] - -.baremetal-deqp-test: - variables: - HWCI_TEST_SCRIPT: "/install/deqp-runner.sh" - FDO_CI_CONCURRENT: 0 # Default to number of CPUs - -# For Valve's bare-metal testing farm jobs. -.b2c-test: - # It would be nice to use ci-templates within Mesa CI for this job's - # image:, but the integration is not possible for the current - # use-case. Within this job, two containers are managed. 1) the - # gitlab runner container from which the job is submitted to the - # DUT, and 2) the test container (e.g. debian/x86_64_test-vk) within - # which the test cases will run on the DUT. Since ci-templates and - # the associated image setting macros in this file rely on variables - # like FDO_DISTRIBUTION_TAG for *the* image, there is no way to - # depend on more than one image per job. So, the job container is - # built as part of the CI in the boot2container project. - image: registry.freedesktop.org/gfx-ci/ci-tron/mesa-trigger:2023-06-02.1 - timeout: 1h 40m - variables: - # No need by default to pull the whole repo - GIT_STRATEGY: none - # boot2container initrd configuration parameters. - B2C_KERNEL_URL: 'https://gitlab.freedesktop.org/gfx-ci/ci-tron/-/package_files/519/download' # Linux 6.1 - B2C_INITRAMFS_URL: 'https://gitlab.freedesktop.org/mupuf/boot2container/-/releases/v0.9.10/downloads/initramfs.linux_amd64.cpio.xz' - B2C_JOB_SUCCESS_REGEX: '\[.*\]: Execution is over, pipeline status: 0\r$' - B2C_JOB_WARN_REGEX: '\*ERROR\* ring .* timeout' - B2C_LOG_LEVEL: 6 - B2C_POWEROFF_DELAY: 15 - B2C_SESSION_END_REGEX: '^.*It''s now safe to turn off your computer\r$' - B2C_SESSION_REBOOT_REGEX: '' - B2C_TIMEOUT_BOOT_MINUTES: 45 - B2C_TIMEOUT_BOOT_RETRIES: 0 - B2C_TIMEOUT_FIRST_MINUTES: 2 - B2C_TIMEOUT_FIRST_RETRIES: 3 - B2C_TIMEOUT_MINUTES: 5 - B2C_TIMEOUT_OVERALL_MINUTES: 90 - B2C_TIMEOUT_RETRIES: 0 - B2C_JOB_VOLUME_EXCLUSIONS: "*.shader_cache,install/*,*/install/*,*/vkd3d-proton.cache*,vkd3d-proton.cache*,*.qpa" - - # As noted in the top description, we make a distinction between the - # container used by gitlab-runner to queue the work, and the container - # used by the DUTs/test machines. To make this distinction quite clear, - # we rename the MESA_IMAGE variable into IMAGE_UNDER_TEST. - IMAGE_UNDER_TEST: "$MESA_IMAGE" - - INSTALL_TARBALL_NAME: "install.tar" - INSTALL_TARBALL: "./artifacts/${INSTALL_TARBALL_NAME}" - CI_B2C_ARTIFACTS: "./artifacts/b2c" - CI_COMMON_SCRIPTS: "./artifacts/ci-common" - B2C_JOB_TEMPLATE: "${CI_B2C_ARTIFACTS}/b2c.yml.jinja2.jinja2" - JOB_FOLDER: "job_folder" - - before_script: - # We don't want the tarball unpacking of .test, but will take the JWT bits. - - !reference [default, before_script] - - - | - set -x - - # Useful as a hook point for runner admins. You may edit the - # config.toml for the Gitlab runner and use a bind-mount to - # populate the hook script with some executable commands. This - # allows quicker feedback than resubmitting pipelines and - # potentially having to wait for a debug build of Mesa to - # complete. - if [ -x /runner-before-script.sh ]; then - echo "Executing runner before-script hook..." - sh /runner-before-script.sh - if [ $? -ne 0 ]; then - echo "Runner hook failed, goodbye" - exit $? - fi - fi - - [ -s "$INSTALL_TARBALL" ] || exit 1 - [ -d "$CI_B2C_ARTIFACTS" ] || exit 1 - [ -d "$CI_COMMON_SCRIPTS" ] || exit 1 - - - B2C_TEST_SCRIPT="bash -euc 'tar xf ${INSTALL_TARBALL_NAME}; ./install/common/init-stage2.sh'" - - # The Valve CI gateway receives jobs in a YAML format. Create a - # job description from the CI environment. - python3 "$CI_B2C_ARTIFACTS"/generate_b2c.py \ - --ci-job-id "${CI_JOB_ID}" \ - --container-cmd "${B2C_TEST_SCRIPT}" \ - --initramfs-url "${B2C_INITRAMFS_URL}" \ - --job-success-regex "${B2C_JOB_SUCCESS_REGEX}" \ - --job-warn-regex "${B2C_JOB_WARN_REGEX}" \ - --kernel-url "${B2C_KERNEL_URL}" \ - --log-level "${B2C_LOG_LEVEL}" \ - --poweroff-delay "${B2C_POWEROFF_DELAY}" \ - --session-end-regex "${B2C_SESSION_END_REGEX}" \ - --session-reboot-regex "${B2C_SESSION_REBOOT_REGEX}" \ - --tags "${CI_RUNNER_TAGS}" \ - --template "${B2C_JOB_TEMPLATE}" \ - --timeout-boot-minutes "${B2C_TIMEOUT_BOOT_MINUTES}" \ - --timeout-boot-retries "${B2C_TIMEOUT_BOOT_RETRIES}" \ - --timeout-first-minutes "${B2C_TIMEOUT_FIRST_MINUTES}" \ - --timeout-first-retries "${B2C_TIMEOUT_FIRST_RETRIES}" \ - --timeout-minutes "${B2C_TIMEOUT_MINUTES}" \ - --timeout-overall-minutes "${B2C_TIMEOUT_OVERALL_MINUTES}" \ - --timeout-retries "${B2C_TIMEOUT_RETRIES}" \ - --job-volume-exclusions "${B2C_JOB_VOLUME_EXCLUSIONS}" \ - --local-container "${IMAGE_UNDER_TEST}" \ - ${B2C_EXTRA_VOLUME_ARGS} \ - --working-dir "$CI_PROJECT_DIR" - - cat b2c.yml.jinja2 - - rm -rf ${JOB_FOLDER} || true - mkdir -v ${JOB_FOLDER} - - # Keep the results path the same as baremetal and LAVA - ln -s "$JOB_FOLDER"/results/ . - - # Create a script to regenerate the CI environment when this job - # begins running on the remote DUT. - set +x - "$CI_COMMON_SCRIPTS"/generate-env.sh > ${JOB_FOLDER}/set-job-env-vars.sh - echo "export SCRIPTS_DIR=./install" >> ${JOB_FOLDER}/set-job-env-vars.sh - echo "Variables passed through:" - cat ${JOB_FOLDER}/set-job-env-vars.sh - set -x - - # Copy the mesa install tarball to the job folder, for later extraction - mv "${INSTALL_TARBALL}" "${JOB_FOLDER}" - - script: | - slugify () { - echo "$1" | sed -r s/[~\^]+//g | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z - } - - # Submit the job to Valve's CI gateway service with the CI - # provisioned job_folder. - env PYTHONUNBUFFERED=1 executorctl \ - run -w b2c.yml.jinja2 -j $(slugify "$CI_JOB_NAME") -s ${JOB_FOLDER} -i "$CI_RUNNER_DESCRIPTION" - - # Anything our job places in results/ will be collected by the - # Gitlab coordinator for status presentation. results/junit.xml - # will be parsed by the UI for more detailed explanations of - # test execution. - artifacts: - when: always - name: "mesa_${CI_JOB_NAME}" - paths: - - results - reports: - junit: results/**/junit.xml - -.b2c-test-vk: - extends: - - .use-debian/x86_64_test-vk - - .b2c-test - needs: - - debian/x86_64_test-vk - - debian-testing - - !reference [.required-for-hardware-jobs, needs] - -.b2c-test-gl: - extends: - - .use-debian/x86_64_test-gl - - .b2c-test - needs: - - debian/x86_64_test-gl - - debian-testing - - !reference [.required-for-hardware-jobs, needs] |