• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1variables:
2  FDO_UPSTREAM_REPO: mesa/mesa
3  MESA_TEMPLATES_COMMIT: &ci-templates-commit 290b79e0e78eab67a83766f4e9691be554fc4afd
4  CI_PRE_CLONE_SCRIPT: |-
5          set -o xtrace
6          /usr/bin/wget -q -O- ${CI_PROJECT_URL}/-/raw/${CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh | bash -
7          set +o xtrace
8  MINIO_HOST: minio-packet.freedesktop.org
9  # per-pipeline artifact storage on MinIO
10  PIPELINE_ARTIFACTS_BASE: ${MINIO_HOST}/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
11  # per-job artifact storage on MinIO
12  JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
13  # reference images stored for traces
14  PIGLIT_REPLAY_REFERENCE_IMAGES_BASE: "${MINIO_HOST}/mesa-tracie-results/$FDO_UPSTREAM_REPO"
15  # Individual CI farm status, set to "offline" to disable jobs
16  # running on a particular CI farm (ie. for outages, etc):
17  FD_FARM: "online"
18
19include:
20  - project: 'freedesktop/ci-templates'
21    ref: 79c325922670137e8f0a4dc5f6f097e0eb57c1af
22    file:
23      - '/templates/ci-fairy.yml'
24  - project: 'freedesktop/ci-templates'
25    ref: *ci-templates-commit
26    file:
27      - '/templates/debian.yml'
28      - '/templates/fedora.yml'
29  - local: '.gitlab-ci/lava/lava-gitlab-ci.yml'
30  - local: '.gitlab-ci/test-source-dep.yml'
31  - local: 'src/amd/ci/gitlab-ci.yml'
32  - local: 'src/broadcom/ci/gitlab-ci.yml'
33  - local: 'src/etnaviv/ci/gitlab-ci.yml'
34  - local: 'src/freedreno/ci/gitlab-ci.yml'
35  - local: 'src/gallium/drivers/i915/ci/gitlab-ci.yml'
36  - local: 'src/gallium/drivers/iris/ci/gitlab-ci.yml'
37  - local: 'src/gallium/drivers/lima/ci/gitlab-ci.yml'
38  - local: 'src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml'
39  - local: 'src/gallium/drivers/radeonsi/ci/gitlab-ci.yml'
40  - local: 'src/gallium/drivers/softpipe/ci/gitlab-ci.yml'
41  - local: 'src/gallium/drivers/virgl/ci/gitlab-ci.yml'
42  - local: 'src/gallium/drivers/zink/ci/gitlab-ci.yml'
43  - local: 'src/gallium/frontends/lavapipe/ci/gitlab-ci.yml'
44  - local: 'src/panfrost/ci/gitlab-ci.yml'
45
46stages:
47  - sanity
48  - container
49  - git-archive
50  - build-x86_64
51  - build-misc
52  - amd
53  - intel
54  - arm
55  - broadcom
56  - freedreno
57  - etnaviv
58  - software-renderer
59  - layered-backends
60  - deploy
61
62# Generic rule to not run the job during scheduled pipelines
63# ----------------------------------------------------------
64.scheduled_pipelines-rules:
65  rules: &ignore_scheduled_pipelines
66    if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
67    when: never
68
69# YAML anchors for rule conditions
70# --------------------------------
71.rules-anchors:
72  rules:
73    # For Marge Bot
74    - if: &is-for-marge '$GITLAB_USER_LOGIN == "marge-bot"'
75      when: never
76    # Forked project branch
77    - if: &is-forked-branch '$CI_PROJECT_NAMESPACE != "mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
78      when: manual
79    # Forked project branch / pre-merge pipeline not for Marge bot
80    - if: &is-forked-branch-or-pre-merge-not-for-marge '$CI_PROJECT_NAMESPACE != "mesa" || ($GITLAB_USER_LOGIN != "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME)'
81      when: manual
82    # Pipeline runs for the main branch of the upstream Mesa project
83    - if: &is-mesa-main '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_DEFAULT_BRANCH'
84      when: always
85    # Post-merge pipeline
86    - if: &is-post-merge '$CI_PROJECT_NAMESPACE == "mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
87      when: on_success
88    # Post-merge pipeline, not for Marge Bot
89    - if: &is-post-merge-not-for-marge '$CI_PROJECT_NAMESPACE == "mesa" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
90      when: on_success
91    # Pre-merge pipeline
92    - if: &is-pre-merge '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
93      when: on_success
94    # Pre-merge pipeline for Marge Bot
95    - if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
96      when: on_success
97
98
99.docs-base:
100  extends:
101    - .fdo.ci-fairy
102    - .ci-run-policy
103  script:
104  - apk --no-cache add graphviz doxygen
105  - pip3 install "sphinx<4.0" breathe mako sphinx_rtd_theme
106  - docs/doxygen-wrapper.py --out-dir=docs/doxygen_xml
107  - sphinx-build -W -b html docs public
108
109pages:
110  extends: .docs-base
111  stage: deploy
112  artifacts:
113    paths:
114    - public
115  needs: []
116  rules:
117    - *ignore_scheduled_pipelines
118    - if: *is-mesa-main
119      changes: &docs-or-ci
120      - docs/**/*
121      - .gitlab-ci.yml
122      when: always
123    # Other cases default to never
124
125test-docs:
126  extends: .docs-base
127  # Cancel job if a newer commit is pushed to the same branch
128  interruptible: true
129  stage: deploy
130  needs: []
131  rules:
132    - *ignore_scheduled_pipelines
133    - if: *is-forked-branch
134      changes: *docs-or-ci
135      when: manual
136    # Other cases default to never
137
138test-docs-mr:
139  extends:
140    - test-docs
141  needs:
142    - sanity
143  artifacts:
144    expose_as: 'Documentation preview'
145    paths:
146    - public/
147  rules:
148    - if: *is-pre-merge
149      changes: *docs-or-ci
150      when: on_success
151    # Other cases default to never
152
153# When to automatically run the CI
154.ci-run-policy:
155  rules:
156    - *ignore_scheduled_pipelines
157    # If any files affecting the pipeline are changed, build/test jobs run
158    # automatically once all dependency jobs have passed
159    - changes: &all_paths
160      - VERSION
161      - bin/git_sha1_gen.py
162      - bin/install_megadrivers.py
163      - bin/meson_get_version.py
164      - bin/symbols-check.py
165      # GitLab CI
166      - .gitlab-ci.yml
167      - .gitlab-ci/**/*
168      # Meson
169      - meson*
170      - build-support/**/*
171      - subprojects/**/*
172      # Source code
173      - include/**/*
174      - src/**/*
175      when: on_success
176    # Otherwise, build/test jobs won't run
177    - when: never
178  retry:
179    max: 2
180    when:
181      - runner_system_failure
182
183
184.ci-deqp-artifacts:
185  artifacts:
186    name: "mesa_${CI_JOB_NAME}"
187    when: always
188    untracked: false
189    paths:
190      # Watch out!  Artifacts are relative to the build dir.
191      # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
192      - artifacts
193      - _build/meson-logs/*.txt
194      - _build/meson-logs/strace
195
196
197# Docker image tag helper templates
198
199.incorporate-templates-commit:
200  variables:
201    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}"
202
203.incorporate-base-tag+templates-commit:
204  variables:
205    FDO_BASE_IMAGE: "${CI_REGISTRY_IMAGE}/${MESA_BASE_IMAGE}:${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
206    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
207
208.set-image:
209  extends:
210    - .incorporate-templates-commit
211  variables:
212    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
213  image: "$MESA_IMAGE"
214
215.set-image-base-tag:
216  extends:
217    - .set-image
218    - .incorporate-base-tag+templates-commit
219  variables:
220    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
221
222
223# Build the CI docker images.
224#
225# MESA_IMAGE_TAG is the tag of the docker image used by later stage jobs. If the
226# image doesn't exist yet, the container stage job generates it.
227#
228# In order to generate a new image, one should generally change the tag.
229# While removing the image from the registry would also work, that's not
230# recommended except for ephemeral images during development: Replacing
231# an image after a significant amount of time might pull in newer
232# versions of gcc/clang or other packages, which might break the build
233# with older commits using the same tag.
234#
235# After merging a change resulting in generating a new image to the
236# main repository, it's recommended to remove the image from the source
237# repository's container registry, so that the image from the main
238# repository's registry will be used there as well.
239
240.container:
241  stage: container
242  extends:
243    - .ci-run-policy
244    - .incorporate-templates-commit
245  rules:
246    - *ignore_scheduled_pipelines
247    # Run pipeline by default in the main project if any CI pipeline
248    # configuration files were changed, to ensure docker images are up to date
249    - if: *is-post-merge
250      changes:
251      - .gitlab-ci.yml
252      - .gitlab-ci/**/*
253      when: on_success
254    # Run pipeline by default if it was triggered by Marge Bot, is for a
255    # merge request, and any files affecting the pipeline were changed
256    - if: *is-pre-merge-for-marge
257      changes:
258        *all_paths
259      when: on_success
260    # Run pipeline by default in the main project if it was not triggered by
261    # Marge Bot, and any files affecting the pipeline were changed
262    - if: *is-post-merge-not-for-marge
263      changes:
264        *all_paths
265      when: on_success
266    # Allow triggering jobs manually in other cases if any files affecting the
267    # pipeline were changed
268    - changes:
269        *all_paths
270      when: manual
271    # Otherwise, container jobs won't run
272    - when: never
273  variables:
274    FDO_DISTRIBUTION_VERSION: bullseye-slim
275    FDO_REPO_SUFFIX: $CI_JOB_NAME
276    FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
277    # no need to pull the whole repo to build the container image
278    GIT_STRATEGY: none
279
280.use-base-image:
281  extends:
282    - .container
283    - .incorporate-base-tag+templates-commit
284    # Don't want the .container rules
285    - .ci-run-policy
286
287# Debian 11 based x86 build image base
288debian/x86_build-base:
289  extends:
290    - .fdo.container-build@debian
291    - .container
292  variables:
293    MESA_IMAGE_TAG: &debian-x86_build-base "2021-07-26-python"
294
295.use-debian/x86_build-base:
296  extends:
297    - .fdo.container-build@debian
298    - .use-base-image
299  variables:
300    MESA_BASE_IMAGE: "debian/x86_build-base"
301    MESA_BASE_TAG: *debian-x86_build-base
302    MESA_ARTIFACTS_BASE_TAG: *debian-x86_build-base
303  needs:
304    - debian/x86_build-base
305
306# Debian 11 based x86 main build image
307debian/x86_build:
308  extends:
309    - .use-debian/x86_build-base
310  variables:
311    MESA_IMAGE_TAG: &debian-x86_build "2021-07-02-bump-libdrm"
312
313.use-debian/x86_build:
314  extends:
315    - .set-image-base-tag
316  variables:
317    MESA_BASE_TAG: *debian-x86_build-base
318    MESA_IMAGE_PATH: "debian/x86_build"
319    MESA_IMAGE_TAG: *debian-x86_build
320  needs:
321    - debian/x86_build
322
323# Debian 11 based i386 cross-build image
324debian/i386_build:
325  extends:
326    - .use-debian/x86_build-base
327  variables:
328    MESA_IMAGE_TAG: &debian-i386_build "2021-07-02-bump-libdrm"
329
330.use-debian/i386_build:
331  extends:
332    - .set-image-base-tag
333  variables:
334    MESA_BASE_TAG: *debian-x86_build-base
335    MESA_IMAGE_PATH: "debian/i386_build"
336    MESA_IMAGE_TAG: *debian-i386_build
337  needs:
338    - debian/i386_build
339
340# Debian 11 based ppc64el cross-build image
341debian/ppc64el_build:
342  extends:
343    - .use-debian/x86_build-base
344  variables:
345    MESA_IMAGE_TAG: &debian-ppc64el_build "2021-07-02-bump-libdrm"
346
347.use-debian/ppc64el_build:
348  extends:
349    - .set-image-base-tag
350  variables:
351    MESA_BASE_TAG: *debian-x86_build-base
352    MESA_IMAGE_PATH: "debian/ppc64el_build"
353    MESA_IMAGE_TAG: *debian-ppc64el_build
354  needs:
355    - debian/ppc64el_build
356
357# Debian 11 based s390x cross-build image
358debian/s390x_build:
359  extends:
360    - .use-debian/x86_build-base
361  variables:
362    MESA_IMAGE_TAG: &debian-s390x_build "2021-07-02-bump-libdrm"
363
364.use-debian/s390x_build:
365  extends:
366    - .set-image-base-tag
367  variables:
368    MESA_BASE_TAG: *debian-x86_build-base
369    MESA_IMAGE_PATH: "debian/s390x_build"
370    MESA_IMAGE_TAG: *debian-s390x_build
371  needs:
372    - debian/s390x_build
373
374# Android NDK cross-build image
375debian/android_build:
376  extends:
377    - .use-debian/x86_build-base
378  variables:
379    MESA_IMAGE_TAG: &debian-android_build "2021-10-26-static-libstdcxx"
380
381.use-debian/android_build:
382  extends:
383    - .set-image-base-tag
384  variables:
385    MESA_BASE_TAG: *debian-x86_build-base
386    MESA_IMAGE_PATH: "debian/android_build"
387    MESA_IMAGE_TAG: *debian-android_build
388  needs:
389    - debian/android_build
390
391# Debian 11 based x86 test image base
392debian/x86_test-base:
393  extends: debian/x86_build-base
394  variables:
395    MESA_IMAGE_TAG: &debian-x86_test-base "2021-10-15-va"
396
397.use-debian/x86_test-base:
398  extends:
399    - .fdo.container-build@debian
400    - .use-base-image
401  variables:
402    MESA_BASE_IMAGE: "debian/x86_test-base"
403    MESA_BASE_TAG: *debian-x86_test-base
404  needs:
405    - debian/x86_test-base
406
407# Debian 11 based x86 test image for GL
408debian/x86_test-gl:
409  extends: .use-debian/x86_test-base
410  variables:
411    FDO_DISTRIBUTION_EXEC: 'env KERNEL_URL=${KERNEL_URL} FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
412    KERNEL_URL: &kernel-rootfs-url "https://gitlab.freedesktop.org/gfx-ci/linux/-/archive/v5.15-for-mesa-ci-540a4af22d71/linux-v5.15-for-mesa-ci-540a4af22d71.tar.bz2"
413    MESA_IMAGE_TAG: &debian-x86_test-gl "2021-11-02-lazor"
414
415# Debian 11 based x86 test image for VK
416debian/x86_test-vk:
417  extends: .use-debian/x86_test-base
418  variables:
419    MESA_IMAGE_TAG: &debian-x86_test-vk "2021-2021-10-15-va"
420
421# Debian 11 based ARM build image
422debian/arm_build:
423  extends:
424    - .fdo.container-build@debian
425    - .container
426  tags:
427    - aarch64
428  variables:
429    MESA_IMAGE_TAG: &debian-arm_build "2021-07-26-python"
430
431.use-debian/arm_build:
432  extends:
433    - .set-image
434  variables:
435    MESA_IMAGE_PATH: "debian/arm_build"
436    MESA_IMAGE_TAG: *debian-arm_build
437    MESA_ARTIFACTS_TAG: *debian-arm_build
438  needs:
439    - debian/arm_build
440
441
442# Fedora 34 based x86 build image
443fedora/x86_build:
444  extends:
445    - .fdo.container-build@fedora
446    - .container
447  variables:
448    FDO_DISTRIBUTION_VERSION: 34
449    MESA_IMAGE_TAG: &fedora-x86_build "2021-07-08-bump-libdrm"
450
451.use-fedora/x86_build:
452  extends:
453    - .set-image
454  variables:
455    MESA_IMAGE_PATH: "fedora/x86_build"
456    MESA_IMAGE_TAG: *fedora-x86_build
457  needs:
458    - fedora/x86_build
459
460
461.kernel+rootfs:
462  extends:
463    - .ci-run-policy
464  stage: container
465  variables:
466    GIT_STRATEGY: fetch
467    KERNEL_URL: *kernel-rootfs-url
468    MESA_ROOTFS_TAG: &kernel-rootfs "2021-11-02-lazor"
469    DISTRIBUTION_TAG: &distribution-tag-arm "${MESA_ROOTFS_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
470  script:
471    - .gitlab-ci/container/lava_build.sh
472
473kernel+rootfs_amd64:
474  extends:
475    - .use-debian/x86_build-base
476    - .kernel+rootfs
477  image: "$FDO_BASE_IMAGE"
478  variables:
479    DEBIAN_ARCH: "amd64"
480    DISTRIBUTION_TAG: &distribution-tag-amd64 "${MESA_ROOTFS_TAG}--${MESA_ARTIFACTS_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
481
482kernel+rootfs_arm64:
483  extends:
484    - .use-debian/arm_build
485    - .kernel+rootfs
486  tags:
487    - aarch64
488  variables:
489    DEBIAN_ARCH: "arm64"
490
491kernel+rootfs_armhf:
492  extends:
493    - kernel+rootfs_arm64
494  variables:
495    DEBIAN_ARCH: "armhf"
496
497# Cannot use anchors defined here from included files, so use extends: instead
498.use-kernel+rootfs-arm:
499  variables:
500    DISTRIBUTION_TAG: *distribution-tag-arm
501    MESA_ROOTFS_TAG: *kernel-rootfs
502
503.use-kernel+rootfs-amd64:
504  variables:
505    DISTRIBUTION_TAG: *distribution-tag-amd64
506    MESA_ROOTFS_TAG: *kernel-rootfs
507
508# x86 image with ARM64 & armhf kernel & rootfs for baremetal testing
509debian/arm_test:
510  extends:
511    - .fdo.container-build@debian
512    - .container
513    # Don't want the .container rules
514    - .ci-run-policy
515  needs:
516    - kernel+rootfs_arm64
517    - kernel+rootfs_armhf
518  variables:
519    FDO_DISTRIBUTION_EXEC: 'env ARTIFACTS_PREFIX=https://${MINIO_HOST}/mesa-lava ARTIFACTS_SUFFIX=${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT} CI_PROJECT_PATH=${CI_PROJECT_PATH} FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} FDO_UPSTREAM_REPO=${FDO_UPSTREAM_REPO} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
520    FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
521    MESA_ARM_BUILD_TAG: *debian-arm_build
522    MESA_IMAGE_TAG: &debian-arm_test "2021-09-17-deqp"
523    MESA_ROOTFS_TAG: *kernel-rootfs
524
525.use-debian/arm_test:
526  image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
527  variables:
528    MESA_ARM_BUILD_TAG: *debian-arm_build
529    MESA_IMAGE_PATH: "debian/arm_test"
530    MESA_IMAGE_TAG: *debian-arm_test
531    MESA_ROOTFS_TAG: *kernel-rootfs
532  needs:
533    - debian/arm_test
534
535# Native Windows docker builds
536#
537# Unlike the above Linux-based builds - including MinGW builds which
538# cross-compile for Windows - which use the freedesktop ci-templates, we
539# cannot use the same scheme here. As Windows lacks support for
540# Docker-in-Docker, and Podman does not run natively on Windows, we have
541# to open-code much of the same ourselves.
542#
543# This is achieved by first running in a native Windows shell instance
544# (host PowerShell) in the container stage to build and push the image,
545# then in the build stage by executing inside Docker.
546
547.windows-docker-vs2019:
548  extends:
549    - .set-image
550  variables:
551    MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}"
552    MESA_IMAGE_PATH: "windows/x64_build"
553    MESA_IMAGE_TAG: "2021-06-24-zink-msvc"
554    MESA_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MESA_IMAGE_PATH:${MESA_IMAGE_TAG}"
555
556windows_build_vs2019:
557  extends:
558    - .container
559    - .windows-docker-vs2019
560  stage: container
561  variables:
562    GIT_STRATEGY: fetch # we do actually need the full repository though
563  timeout: 2h 30m # LLVM + piglit takes ages
564  tags:
565    - windows
566    - shell
567    - "1809"
568    - mesa
569  script:
570    - .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $MESA_IMAGE $MESA_UPSTREAM_IMAGE
571
572.use-windows_build_vs2019:
573  extends: .windows-docker-vs2019
574  image: "$MESA_IMAGE"
575  needs:
576    - windows_build_vs2019
577
578
579# Git archive
580
581make git archive:
582  extends:
583    - .fdo.ci-fairy
584  stage: git-archive
585  rules:
586    - if: *is-scheduled-pipeline
587      when: on_success
588  # ensure we are running on packet
589  tags:
590    - packet.net
591  script:
592    # Compactify the .git directory
593    - git gc --aggressive
594    # compress the current folder
595    - tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
596
597    # login with the JWT token
598    - ci-fairy minio login $CI_JOB_JWT
599    - ci-fairy minio cp ../$CI_PROJECT_NAME.tar.gz minio://$MINIO_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
600
601
602# Sanity checks of MR settings and commit logs
603sanity:
604  extends:
605    - .fdo.ci-fairy
606  stage: sanity
607  rules:
608    - if: *is-pre-merge
609      when: on_success
610    # Other cases default to never
611  variables:
612    GIT_STRATEGY: none
613  script:
614    # ci-fairy check-commits --junit-xml=check-commits.xml
615    - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
616  artifacts:
617    when: on_failure
618    reports:
619      junit: check-*.xml
620
621
622# BUILD
623
624# Shared between windows and Linux
625.build-common:
626  extends: .ci-run-policy
627  # Cancel job if a newer commit is pushed to the same branch
628  interruptible: true
629  artifacts:
630    name: "mesa_${CI_JOB_NAME}"
631    when: always
632    paths:
633      - _build/meson-logs/*.txt
634      - _build/meson-logs/strace
635      - shader-db
636
637# Just Linux
638.build-linux:
639  extends: .build-common
640  variables:
641    CCACHE_COMPILERCHECK: "content"
642    CCACHE_COMPRESS: "true"
643    CCACHE_DIR: /cache/mesa/ccache
644  # Use ccache transparently, and print stats before/after
645  before_script:
646    - export PATH="/usr/lib/ccache:$PATH"
647    - export CCACHE_BASEDIR="$PWD"
648    - ccache --show-stats
649  after_script:
650    - ccache --show-stats
651
652.build-windows:
653  extends: .build-common
654  tags:
655    - windows
656    - docker
657    - "1809"
658    - mesa
659  cache:
660    key: ${CI_JOB_NAME}
661    paths:
662      - subprojects/packagecache
663
664.meson-build:
665  extends:
666    - .build-linux
667    - .use-debian/x86_build
668  stage: build-x86_64
669  variables:
670    LLVM_VERSION: 11
671  script:
672    - .gitlab-ci/meson/build.sh
673
674debian-testing:
675  extends:
676    - .meson-build
677    - .ci-deqp-artifacts
678  variables:
679    UNWIND: "enabled"
680    DRI_LOADERS: >
681      -D glx=dri
682      -D gbm=enabled
683      -D egl=enabled
684      -D platforms=x11
685    GALLIUM_ST: >
686      -D dri3=enabled
687      -D gallium-va=enabled
688    GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,iris,i915"
689    VULKAN_DRIVERS: "swrast,amd"
690    BUILDTYPE: "debugoptimized"
691    EXTRA_OPTION: >
692      -D valgrind=false
693    MINIO_ARTIFACT_NAME: mesa-amd64
694  script:
695    - .gitlab-ci/meson/build.sh
696    - .gitlab-ci/prepare-artifacts.sh
697
698debian-testing-asan:
699  extends:
700    - debian-testing
701  variables:
702    C_ARGS: >
703      -Wno-error=stringop-truncation
704    EXTRA_OPTION: >
705      -D b_sanitize=address
706      -D valgrind=false
707    MINIO_ARTIFACT_NAME: ""
708    ARTIFACTS_DEBUG_SYMBOLS: 1
709
710debian-clover-testing:
711  extends:
712    - .meson-build
713    - .ci-deqp-artifacts
714  variables:
715    UNWIND: "enabled"
716    DRI_LOADERS: >
717      -D glx=disabled
718      -D egl=disabled
719      -D gbm=disabled
720    GALLIUM_ST: >
721      -D gallium-opencl=icd
722      -D opencl-spirv=true
723    GALLIUM_DRIVERS: "swrast"
724    BUILDTYPE: "debugoptimized"
725    EXTRA_OPTION: >
726      -D valgrind=false
727  script:
728    - .gitlab-ci/meson/build.sh
729    - .gitlab-ci/prepare-artifacts.sh
730
731debian-gallium:
732  extends: .meson-build
733  variables:
734    UNWIND: "enabled"
735    DRI_LOADERS: >
736      -D glx=dri
737      -D gbm=enabled
738      -D egl=enabled
739      -D platforms=x11,wayland
740    GALLIUM_ST: >
741      -D dri3=enabled
742      -D gallium-extra-hud=true
743      -D gallium-vdpau=enabled
744      -D gallium-xvmc=enabled
745      -D gallium-omx=bellagio
746      -D gallium-va=enabled
747      -D gallium-xa=enabled
748      -D gallium-nine=true
749      -D gallium-opencl=disabled
750    GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
751    VULKAN_DRIVERS: swrast
752    EXTRA_OPTION: >
753      -D osmesa=true
754      -D tools=all
755  script:
756    - .gitlab-ci/meson/build.sh
757    - .gitlab-ci/run-shader-db.sh
758
759# Test a release build with -Werror so new warnings don't sneak in.
760debian-release:
761  extends: .meson-build
762  variables:
763    UNWIND: "enabled"
764    DRI_LOADERS: >
765      -D glx=dri
766      -D gbm=enabled
767      -D egl=enabled
768      -D platforms=x11,wayland
769    GALLIUM_ST: >
770      -D dri3=enabled
771      -D gallium-extra-hud=true
772      -D gallium-vdpau=enabled
773      -D gallium-xvmc=disabled
774      -D gallium-omx=disabled
775      -D gallium-va=enabled
776      -D gallium-xa=enabled
777      -D gallium-nine=false
778      -D gallium-opencl=disabled
779      -D llvm=false
780    GALLIUM_DRIVERS: "i915,iris,nouveau,kmsro,freedreno,r300,svga,swrast,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,crocus"
781    VULKAN_DRIVERS: "amd"
782    BUILDTYPE: "release"
783    EXTRA_OPTION: >
784      -D osmesa=true
785      -D tools=all
786  script:
787    - .gitlab-ci/meson/build.sh
788
789fedora-release:
790  extends:
791    - .meson-build
792    - .use-fedora/x86_build
793  variables:
794    BUILDTYPE: "release"
795    C_ARGS: >
796      -Wno-error=array-bounds
797      -Wno-error=maybe-uninitialized
798      -Wno-error=stringop-overread
799      -Wno-error=uninitialized
800    CPP_ARGS: >
801      -Wno-error=array-bounds
802    DRI_DRIVERS: "nouveau,i915,i965,r100,r200"
803    DRI_LOADERS: >
804      -D glx=dri
805      -D gbm=enabled
806      -D egl=enabled
807      -D glvnd=true
808      -D platforms=x11,wayland
809    EXTRA_OPTION: >
810      -D osmesa=true
811      -D selinux=true
812      -D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost
813    GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
814    GALLIUM_ST: >
815      -D dri3=enabled
816      -D gallium-extra-hud=true
817      -D gallium-vdpau=enabled
818      -D gallium-xvmc=disabled
819      -D gallium-omx=disabled
820      -D gallium-va=enabled
821      -D gallium-xa=enabled
822      -D gallium-nine=false
823      -D gallium-opencl=icd
824      -D gles1=disabled
825      -D gles2=enabled
826      -D llvm=enabled
827      -D microsoft-clc=disabled
828      -D shared-llvm=enabled
829      -D vulkan-device-select-layer=true
830    LLVM_VERSION: ""
831    UNWIND: "disabled"
832    VULKAN_DRIVERS: "amd,broadcom,freedreno,intel"
833  script:
834    - .gitlab-ci/meson/build.sh
835
836debian-android:
837  extends:
838    - .meson-cross
839    - .use-debian/android_build
840  variables:
841    UNWIND: "disabled"
842    C_ARGS: >
843      -Wno-error=absolute-value
844      -Wno-error=asm-operand-widths
845      -Wno-error=constant-conversion
846      -Wno-error=enum-conversion
847      -Wno-error=extern-initializer
848      -Wno-error=initializer-overrides
849      -Wno-error=missing-braces
850      -Wno-error=sometimes-uninitialized
851      -Wno-error=tautological-constant-out-of-range-compare
852      -Wno-error=unused-function
853      -Wno-error=unused-label
854    CPP_ARGS: >
855      -Wno-error=deprecated-declarations
856      -Wno-error=non-virtual-dtor
857    DRI_LOADERS: >
858      -D glx=disabled
859      -D gbm=disabled
860      -D egl=enabled
861      -D platforms=android
862    EXTRA_OPTION: >
863      -D android-stub=true
864      -D llvm=disabled
865      -D platform-sdk-version=29
866      -D valgrind=false
867    GALLIUM_ST: >
868      -D dri3=disabled
869      -D gallium-vdpau=disabled
870      -D gallium-xvmc=disabled
871      -D gallium-omx=disabled
872      -D gallium-va=disabled
873      -D gallium-xa=disabled
874      -D gallium-nine=false
875      -D gallium-opencl=disabled
876    LLVM_VERSION: ""
877    PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
878  script:
879    - PKG_CONFIG_PATH=/usr/local/lib/aarch64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/pkgconfig/ CROSS=aarch64-linux-android GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost,vc4,v3d VULKAN_DRIVERS=freedreno,broadcom,virtio-experimental .gitlab-ci/meson/build.sh
880    # x86_64 build:
881    # Can't do Intel because gen_decoder.c currently requires libexpat, which
882    # is not a dependency that AOSP wants to accept.  Can't do Radeon because
883    # it requires LLVM, which we don't have an Android build of.
884    - PKG_CONFIG_PATH=/usr/local/lib/x86_64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/pkgconfig/ CROSS=x86_64-linux-android GALLIUM_DRIVERS=iris VULKAN_DRIVERS=intel .gitlab-ci/meson/build.sh
885
886.meson-cross:
887  extends:
888    - .meson-build
889  stage: build-misc
890  variables:
891    UNWIND: "disabled"
892    DRI_LOADERS: >
893      -D glx=dri
894      -D gbm=enabled
895      -D egl=enabled
896      -D platforms=x11
897      -D osmesa=false
898    GALLIUM_ST: >
899      -D dri3=enabled
900      -D gallium-vdpau=disabled
901      -D gallium-xvmc=disabled
902      -D gallium-omx=disabled
903      -D gallium-va=disabled
904      -D gallium-xa=disabled
905      -D gallium-nine=false
906
907.meson-arm:
908  extends:
909    - .meson-cross
910    - .use-debian/arm_build
911  needs:
912    - debian/arm_build
913  variables:
914    VULKAN_DRIVERS: freedreno,broadcom
915    GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
916    BUILDTYPE: "debugoptimized"
917  tags:
918    - aarch64
919
920debian-armhf:
921  extends:
922    - .meson-arm
923    - .ci-deqp-artifacts
924  variables:
925    CROSS: armhf
926    EXTRA_OPTION: >
927      -D llvm=disabled
928      -D valgrind=false
929    MINIO_ARTIFACT_NAME: mesa-armhf
930  script:
931    - .gitlab-ci/meson/build.sh
932    - .gitlab-ci/prepare-artifacts.sh
933
934debian-arm64:
935  extends:
936    - .meson-arm
937    - .ci-deqp-artifacts
938  variables:
939    VULKAN_DRIVERS: "freedreno,broadcom,panfrost"
940    EXTRA_OPTION: >
941      -D llvm=disabled
942      -D valgrind=false
943    MINIO_ARTIFACT_NAME: mesa-arm64
944  script:
945    - .gitlab-ci/meson/build.sh
946    - .gitlab-ci/prepare-artifacts.sh
947
948debian-arm64-asan:
949  extends:
950    - debian-arm64
951  variables:
952    C_ARGS: >
953      -Wno-error=stringop-truncation
954    EXTRA_OPTION: >
955      -D llvm=disabled
956      -D b_sanitize=address
957      -D valgrind=false
958    ARTIFACTS_DEBUG_SYMBOLS: 1
959    MINIO_ARTIFACT_NAME: mesa-arm64-asan
960    MESON_TEST_ARGS: "--no-suite mesa:compiler"
961
962debian-arm64-build-test:
963  extends:
964    - .meson-arm
965    - .ci-deqp-artifacts
966  variables:
967    VULKAN_DRIVERS: "amd"
968    EXTRA_OPTION: >
969      -Dtools=panfrost
970  script:
971    - .gitlab-ci/meson/build.sh
972
973debian-clang:
974  extends: .meson-build
975  variables:
976    UNWIND: "enabled"
977    C_ARGS: >
978      -Wno-error=absolute-value
979      -Wno-error=constant-conversion
980      -Wno-error=constant-logical-operand
981      -Wno-error=enum-conversion
982      -Wno-error=gnu-variable-sized-type-not-at-end
983      -Wno-error=implicit-const-int-float-conversion
984      -Wno-error=initializer-overrides
985      -Wno-error=misleading-indentation
986      -Wno-error=mismatched-tags
987      -Wno-error=missing-braces
988      -Wno-error=overloaded-virtual
989      -Wno-error=self-assign
990      -Wno-error=sometimes-uninitialized
991      -Wno-error=tautological-constant-compare
992      -Wno-error=tautological-constant-out-of-range-compare
993      -Wno-error=tautological-overlap-compare
994      -Wno-error=typedef-redefinition
995      -Wno-error=unused-function
996      -Wno-error=unused-private-field
997      -Wno-error=xor-used-as-pow
998    CPP_ARGS: >
999      -Wno-error=c99-designator
1000      -Wno-error=constant-logical-operand
1001      -Wno-error=deprecated-declarations
1002      -Wno-error=implicit-const-int-float-conversion
1003      -Wno-error=mismatched-tags
1004      -Wno-error=missing-braces
1005      -Wno-error=overloaded-virtual
1006      -Wno-error=self-assign
1007      -Wno-error=sometimes-uninitialized
1008      -Wno-error=tautological-constant-out-of-range-compare
1009      -Wno-error=unused-const-variable
1010      -Wno-error=unused-private-field
1011      -Wno-error=unused-value
1012      -Wno-error=unused-variable
1013    DRI_LOADERS: >
1014      -D glvnd=true
1015    DRI_DRIVERS: "auto"
1016    GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
1017    VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio-experimental
1018    CC: clang
1019    CXX: clang++
1020
1021windows-vs2019:
1022  extends:
1023    - .build-windows
1024    - .use-windows_build_vs2019
1025    - .windows-build-rules
1026  stage: build-misc
1027  script:
1028    - . .\.gitlab-ci\windows\mesa_build.ps1
1029  artifacts:
1030    paths:
1031      - _build/meson-logs/*.txt
1032      - _install/
1033
1034test-d3d12-windows:
1035  extends:
1036    - .build-windows
1037    - .use-windows_build_vs2019
1038    - .windows-test-rules
1039  stage: layered-backends
1040  dependencies:
1041    - windows-vs2019
1042  needs:
1043    - windows-vs2019
1044  variables:
1045    GIT_STRATEGY: none # testing doesn't build anything from source
1046    GALLIUM_DRIVER: d3d12
1047    PIGLIT_PROFILE: quick_gl
1048    PIGLIT_TESTS: -x nv_copy_depth_to_color -x repeat-wait -x arb_timer_query@timestamp-get
1049  script:
1050    - . _install/piglit_run.ps1
1051  artifacts:
1052    when: on_failure
1053    name: "mesa_${CI_JOB_NAME}"
1054    paths:
1055      - summary/
1056
1057debian-clover:
1058  extends: .meson-build
1059  variables:
1060    UNWIND: "enabled"
1061    DRI_LOADERS: >
1062      -D glx=disabled
1063      -D egl=disabled
1064      -D gbm=disabled
1065    GALLIUM_DRIVERS: "r600,radeonsi"
1066    GALLIUM_ST: >
1067      -D dri3=disabled
1068      -D gallium-vdpau=disabled
1069      -D gallium-xvmc=disabled
1070      -D gallium-omx=disabled
1071      -D gallium-va=disabled
1072      -D gallium-xa=disabled
1073      -D gallium-nine=false
1074      -D gallium-opencl=icd
1075    EXTRA_OPTION: >
1076      -D valgrind=false
1077  script:
1078    - LLVM_VERSION=9 GALLIUM_DRIVERS=r600,swrast .gitlab-ci/meson/build.sh
1079    - .gitlab-ci/meson/build.sh
1080
1081debian-vulkan:
1082  extends: .meson-build
1083  variables:
1084    UNWIND: "disabled"
1085    DRI_LOADERS: >
1086      -D glx=disabled
1087      -D gbm=disabled
1088      -D egl=disabled
1089      -D platforms=x11,wayland
1090      -D osmesa=false
1091    GALLIUM_ST: >
1092      -D dri3=enabled
1093      -D gallium-vdpau=disabled
1094      -D gallium-xvmc=disabled
1095      -D gallium-omx=disabled
1096      -D gallium-va=disabled
1097      -D gallium-xa=disabled
1098      -D gallium-nine=false
1099      -D gallium-opencl=disabled
1100      -D b_sanitize=undefined
1101      -D c_args=-fno-sanitize-recover=all
1102      -D cpp_args=-fno-sanitize-recover=all
1103    UBSAN_OPTIONS: "print_stacktrace=1"
1104    VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio-experimental
1105    EXTRA_OPTION: >
1106      -D vulkan-layers=device-select,overlay
1107      -D build-aco-tests=true
1108
1109debian-i386:
1110  extends:
1111    - .meson-cross
1112    - .use-debian/i386_build
1113  variables:
1114    CROSS: i386
1115    VULKAN_DRIVERS: intel,amd,swrast,virtio-experimental
1116    GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,swrast,virgl,zink,crocus"
1117    DRI_DRIVERS: "i915,i965,r100,r200,nouveau"
1118    EXTRA_OPTION: >
1119      -D vulkan-layers=device-select,overlay
1120
1121debian-s390x:
1122  extends:
1123    - debian-ppc64el
1124    - .use-debian/s390x_build
1125    - .s390x-rules
1126  tags:
1127    - kvm
1128  variables:
1129    CROSS: s390x
1130    GALLIUM_DRIVERS: "swrast,zink"
1131    # The lp_test_blend test times out with LLVM 11
1132    LLVM_VERSION: 9
1133    VULKAN_DRIVERS: "swrast"
1134
1135debian-ppc64el:
1136  extends:
1137    - .meson-cross
1138    - .use-debian/ppc64el_build
1139    - .ppc64el-rules
1140  variables:
1141    CROSS: ppc64el
1142    GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl,zink"
1143    VULKAN_DRIVERS: "amd,swrast"
1144
1145debian-mingw32-x86_64:
1146  extends: .meson-build
1147  stage: build-misc
1148  variables:
1149    UNWIND: "disabled"
1150    C_ARGS: >
1151      -Wno-error=format
1152      -Wno-error=format-extra-args
1153    CPP_ARGS: $C_ARGS
1154    DRI_DRIVERS: ""
1155    GALLIUM_DRIVERS: "swrast"
1156    EXTRA_OPTION: >
1157      -Dllvm=disabled
1158      -Dzlib=disabled
1159      -Dosmesa=true
1160      --cross-file=.gitlab-ci/x86_64-w64-mingw32
1161
1162.test:
1163  extends:
1164    - .ci-run-policy
1165  # Cancel job if a newer commit is pushed to the same branch
1166  interruptible: true
1167  variables:
1168    GIT_STRATEGY: none # testing doesn't build anything from source
1169  before_script:
1170    # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
1171    - rm -rf install
1172    - tar -xf artifacts/install.tar
1173    - LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
1174  artifacts:
1175    when: always
1176    name: "mesa_${CI_JOB_NAME}"
1177    paths:
1178      - results/
1179
1180.use-debian/x86_test-gl:
1181  extends:
1182    - .test
1183    - .set-image-base-tag
1184  variables:
1185    MESA_BASE_TAG: *debian-x86_test-base
1186    MESA_IMAGE_PATH: "debian/x86_test-gl"
1187    MESA_IMAGE_TAG: *debian-x86_test-gl
1188  needs:
1189    - debian/x86_test-gl
1190
1191.test-gl:
1192  extends:
1193    - .use-debian/x86_test-gl
1194  needs:
1195    - debian/x86_test-gl
1196    - debian-testing
1197
1198.test-vk:
1199  extends:
1200    - .test
1201    - .set-image-base-tag
1202  variables:
1203    MESA_BASE_TAG: *debian-x86_test-base
1204    MESA_IMAGE_PATH: "debian/x86_test-vk"
1205    MESA_IMAGE_TAG: *debian-x86_test-vk
1206  needs:
1207    - debian-testing
1208    - debian/x86_test-vk
1209
1210.test-cl:
1211  extends:
1212    - .use-debian/x86_test-gl
1213  needs:
1214    - debian/x86_test-gl
1215    - debian-clover-testing
1216
1217.vkd3d-proton-test:
1218  artifacts:
1219    when: on_failure
1220    name: "mesa_${CI_JOB_NAME}"
1221    paths:
1222      - results/vkd3d-proton.log
1223  script:
1224    - ./install/vkd3d-proton/run.sh
1225
1226.piglit-test:
1227  artifacts:
1228    when: on_failure
1229    name: "mesa_${CI_JOB_NAME}"
1230    paths:
1231      - results/summary/
1232      - results/*.txt
1233  variables:
1234    PIGLIT_NO_WINDOW: 1
1235  script:
1236    - install/piglit/run.sh
1237
1238.piglit-traces-test:
1239  extends:
1240    - .piglit-test
1241  cache:
1242    key: ${CI_JOB_NAME}
1243    paths:
1244      - replayer-db/
1245  artifacts:
1246    when: on_failure
1247    name: "mesa_${CI_JOB_NAME}"
1248    reports:
1249      junit: results/junit.xml
1250  variables:
1251    PIGLIT_PROFILES: replay
1252    PIGLIT_REPLAY_UPLOAD_TO_MINIO: 1
1253    PIGLIT_REPLAY_EXTRA_ARGS:  --keep-image --db-path ${CI_PROJECT_DIR}/replayer-db/ --minio_host=minio-packet.freedesktop.org --minio_bucket=mesa-tracie-public --role-session-name=${CI_PROJECT_PATH}:${CI_JOB_ID} --jwt=${CI_JOB_JWT}
1254    PIGLIT_JUNIT_RESULTS: 1
1255
1256.deqp-test:
1257  script:
1258    - ./install/deqp-runner.sh
1259  artifacts:
1260    exclude:
1261      - results/*.shader_cache
1262    reports:
1263      junit: results/junit.xml
1264
1265.deqp-test-vk:
1266  extends:
1267    - .deqp-test
1268  variables:
1269    DEQP_VER: vk
1270
1271.fossilize-test:
1272  script:
1273    - ./install/fossilize-runner.sh
1274  artifacts:
1275    when: on_failure
1276    name: "mesa_${CI_JOB_NAME}"
1277    paths:
1278      - results/
1279
1280# Rules for tests that should not be present in MRs or the main
1281# project's pipeline (don't block marge or report red on
1282# mesa/mesa main) but should be present on pipelines in personal
1283# branches (so you can opt in to running the flaky test when you want
1284# to).
1285.test-manual:
1286  rules:
1287    - *ignore_scheduled_pipelines
1288    - if: *is-forked-branch
1289      changes:
1290        *all_paths
1291      when: manual
1292    - when: never
1293  variables:
1294    GIT_STRATEGY: none
1295    JOB_TIMEOUT: 80
1296
1297# The above .test-manual rules doesn't allow the jobs to be available for MRs
1298# but we should have an option to have manual jobs in MRs as well.
1299.test-manual-mr:
1300  rules:
1301    - *ignore_scheduled_pipelines
1302    - if: *is-forked-branch-or-pre-merge-not-for-marge
1303      changes:
1304        *all_paths
1305      when: manual
1306    - when: never
1307  variables:
1308    GIT_STRATEGY: none
1309    JOB_TIMEOUT: 80
1310
1311.baremetal-test:
1312  extends:
1313    - .ci-run-policy
1314    - .test
1315  # Cancel job if a newer commit is pushed to the same branch
1316  interruptible: true
1317  stage: test
1318  before_script:
1319    # Use this instead of gitlab's artifacts download because it hits packet.net
1320    # instead of fd.o.  Set FDO_HTTP_CACHE_URI to an http cache for your test lab to
1321    # improve it even more (see https://docs.mesa3d.org/ci/bare-metal.html for
1322    # setup).
1323    - wget ${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${MINIO_ARTIFACT_NAME}.tar.gz -S --progress=dot:giga -O- | tar -xz
1324  artifacts:
1325    when: always
1326    name: "mesa_${CI_JOB_NAME}"
1327    paths:
1328      - results/
1329      - serial*.txt
1330    exclude:
1331      - results/*.shader_cache
1332    reports:
1333      junit: results/junit.xml
1334
1335.baremetal-test-armhf:
1336  extends:
1337    - .baremetal-test
1338  variables:
1339    MINIO_ARTIFACT_NAME: mesa-armhf
1340
1341.baremetal-arm64-asan-test:
1342  variables:
1343    DEQP_RUNNER_OPTIONS: "--env LD_PRELOAD=libasan.so.6"
1344    MINIO_ARTIFACT_NAME: mesa-arm64-asan
1345  needs:
1346    - debian/arm_test
1347    - job: debian-arm64-asan
1348      artifacts: false
1349
1350.baremetal-deqp-test:
1351  variables:
1352    HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
1353    FDO_CI_CONCURRENT: 0 # Default to number of CPUs
1354