variables: FDO_UPSTREAM_REPO: "virgl/virglrenderer" MESA_TEMPLATES_COMMIT: &ci-templates-commit 290b79e0e78eab67a83766f4e9691be554fc4afd MESA_BASE_TAG: ${DEBIAN_BASE_TAG} # # IMPORTANT! # # Use the Pipeline ID corresponding to the Mesa Git rev provided below. # If multiple pipeline runs are available, please choose the one having # at least the 'debian-testing' job in 'Build-x86_64' stage completed. # # Pick a pipeline on https://gitlab.freedesktop.org/mesa/mesa/-/pipelines/ # MESA_PIPELINE_ID: 533405 MESA_PROJECT_PATH: mesa/mesa MINIO_HOST: minio-packet.freedesktop.org # Per-pipeline artifact storage on MinIO PIPELINE_ARTIFACTS_BASE: ${MINIO_HOST}/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID} CI_REGISTRY_IMAGE: "registry.freedesktop.org/${MESA_PROJECT_PATH}" include: - project: 'freedesktop/ci-templates' ref: 79c325922670137e8f0a4dc5f6f097e0eb57c1af file: - '/templates/ci-fairy.yml' - project: 'freedesktop/ci-templates' ref: *ci-templates-commit file: - '/templates/debian.yml' - '/templates/fedora.yml' - project: 'mesa/mesa' # IMPORTANT: Use a recent Mesa Git revision # The commit ref must be in sync with the pipeline picked above # It can be found on the pipeline page below the commit message ref: 3244100557fc8c92fccb8258a7c1f69bbabb9172 file: - '/.gitlab-ci/image-tags.yml' # YAML anchors for rule conditions # -------------------------------- .rules-anchors: rules: # Scheduled pipeline - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"' when: on_success # For Marge Bot - if: &is-for-marge '$GITLAB_USER_LOGIN == "marge-bot"' when: never # Forked project branch - if: &is-forked-branch '$CI_PROJECT_NAMESPACE != "virgl" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME' when: manual # Forked project branch / pre-merge pipeline not for Marge bot - if: &is-forked-branch-or-pre-merge-not-for-marge '$CI_PROJECT_NAMESPACE != "virgl" || ($GITLAB_USER_LOGIN != "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME)' when: manual # Pipeline runs for the main branch of the upstream virglrenderer project - if: &is-virglrenderer-main '$CI_PROJECT_NAMESPACE == "virgl" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_DEFAULT_BRANCH' when: always # Post-merge pipeline - if: &is-post-merge '$CI_PROJECT_NAMESPACE == "virgl" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME' when: on_success # Post-merge pipeline, not for Marge Bot - if: &is-post-merge-not-for-marge '$CI_PROJECT_NAMESPACE == "virgl" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME' when: on_success # Pre-merge pipeline - if: &is-pre-merge '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME' when: on_success # Pre-merge pipeline for Marge Bot - if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME' when: on_success stages: - build - sanity test - test .set-image: variables: MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}" image: "$MESA_IMAGE" .set-image-base-tag: extends: - .set-image variables: MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}" debian/x86_build: stage: build extends: - .set-image-base-tag variables: MESA_IMAGE_PATH: ${DEBIAN_X86_BUILD_IMAGE_PATH} MESA_IMAGE_TAG: ${DEBIAN_BUILD_TAG} MINIO_ARTIFACT_NAME: virgl-amd64 script: - .gitlab-ci/meson/build.sh artifacts: name: "virgl_${CI_JOB_NAME}" when: always paths: - install/ - results/ rules: - if: *is-scheduled-pipeline when: on_success - if: *is-post-merge when: never - if: *is-forked-branch-or-pre-merge-not-for-marge when: manual - if: *is-pre-merge-for-marge when: on_success - when: manual # # Sanity test jobs # .make_check_base: stage: sanity test extends: debian/x86_build needs: [] artifacts: when: always paths: - results/ mesa check meson: extends: .make_check_base variables: TEST_SUITE: make-check-meson make check clang-fuzzer: extends: .make_check_base variables: TEST_SUITE: make-check-clang-fuzzer CC: clang EXTRA_OPTION: "-D fuzzer=true" make check trace-stderr: extends: .make_check_base variables: TEST_SUITE: make-check-trace-stderr EXTRA_OPTION: "-D tracing=stderr" make check venus: extends: .make_check_base variables: TEST_SUITE: make-check-venus EXTRA_OPTION: "-D venus-experimental=true" # # Piglit & dEQP test jobs # .use-gl-test-image: stage: test extends: - .set-image-base-tag before_script: - export CI_JOB_NAME_SANITIZED="$(echo $CI_JOB_NAME | tr ' /' '--')" variables: MESA_IMAGE_PATH: ${DEBIAN_X86_TEST_IMAGE_PATH} MESA_IMAGE_TAG: ${DEBIAN_X86_TEST_GL_TAG} script: - export DEQP_RESULTS_DIR="results/${CI_JOB_NAME_SANITIZED}" - export PIGLIT_RESULTS_DIR="results/${CI_JOB_NAME_SANITIZED}" - .gitlab-ci/container/debian/x86_test.sh artifacts: name: "virgl-result" when: always paths: - results/ reports: junit: results/junit.xml needs: - job: debian/x86_build artifacts: true rules: - if: *is-post-merge when: never - when: on_success .gl-host-test: extends: - .use-gl-test-image variables: GALLIUM_DRIVER: virpipe GALLIVM_PERF: nopt .gl-virt-test: extends: - .use-gl-test-image variables: GALLIUM_DRIVER: virgl CROSVM_GALLIUM_DRIVER: llvmpipe GALLIVM_PERF: "nopt,no_quad_lod" .deqp-host: extends: - .gl-host-test .piglit-host: extends: - .gl-host-test variables: &piglit-host-variables PIGLIT_PLATFORM: surfaceless_egl PIGLIT_NO_WINDOW: 1 PIGLIT_PROFILES: gpu .deqp-virt: extends: - .gl-virt-test variables: # There will be FDO_CI_CONCURRENT Crosvm processes, so each should use a single thread LP_NUM_THREADS: 1 .piglit-virt: extends: - .gl-virt-test variables: <<: *piglit-host-variables # Use all threads for rendering and only run one job at a time LP_NUM_THREADS: ${FDO_CI_CONCURRENT} FORCE_FDO_CI_CONCURRENT: 1 # Host runners (virpipe/vtest) deqp-gl-host: extends: - .deqp-host variables: DEQP_SUITE: virgl-gl GPU_VERSION: virgl-gl deqp-gles-host: extends: - .deqp-host variables: VIRGL_HOST_API: GLES DEQP_SUITE: virgl-gles GPU_VERSION: virgl-gles piglit-gl-host: extends: - .piglit-host variables: GPU_VERSION: virgl-gl piglit-gles-host: extends: - .piglit-host variables: VIRGL_HOST_API: GLES GPU_VERSION: virgl-gles # Virt runners (virgl/crosvm) deqp-gl-virt: extends: - .deqp-virt variables: DEQP_SUITE: virgl-gl GPU_VERSION: virgl-gl CROSVM_GPU_ARGS: &deqp-gl-crosvm-gpu-args "gles=false,backend=virglrenderer,egl=true,surfaceless=true,width=1024,height=768" deqp-gles-virt: extends: - .deqp-virt variables: VIRGL_HOST_API: GLES DEQP_SUITE: virgl-gles GPU_VERSION: virgl-gles CROSVM_GPU_ARGS: &deqp-gles-crosvm-gpu-args "gles=true,backend=virglrenderer,egl=true,surfaceless=true,width=1024,height=768" piglit-gl-virt: extends: - .piglit-virt parallel: 3 variables: GPU_VERSION: virgl-gl CROSVM_GPU_ARGS: *deqp-gl-crosvm-gpu-args piglit-gles-virt: extends: - .piglit-virt parallel: 3 variables: VIRGL_HOST_API: GLES GPU_VERSION: virgl-gles CROSVM_GPU_ARGS: *deqp-gles-crosvm-gpu-args