xref: /petsc/.gitlab-ci.yml (revision bddcd29d7bbf2ee8ba9f84562dbae036097f936e)
1#
2# stage-1 take only a few minutes; they do not run the full test suite or external packages.
3#
4# stage-2 runs on MCS systems and may take 10 to 15 minutes. They run the full test suite but with limited mixture of external packages
5#
6# stage-3 runs on MCS systems and may take an hour or more. They run the full test suite and heavily test external packages, utilize valgrind etc
7#
8# The stage-(n) tests are only started if all of the stage-(n-1) tests run without error
9#   You can limit the testing by using the variable STAGE with value 1 or 2
10#
11
12stages:
13  - stage-1
14  - stage-2
15  - stage-3
16variables:
17  GIT_STRATEGY: fetch
18  GIT_CLEAN_FLAGS: -ffdxq
19  PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
20  TIMEOUT: 450
21
22#
23# The most basic template that most tests will expand upon. In particular merge requests and branch pushes DO NOT trigger testing
24#
25
26.test:
27  interruptible: true
28  only:
29    refs:
30#     Set with CI/CD Shedules - New Schedule
31      - schedules
32      - api
33#     Set with CI/CD Pipelines - Run Pipeline
34      - web
35      - merge_requests
36  dependencies: []
37
38check-ci-settings:
39  extends: .test
40  stage: .pre
41  tags:
42    - check-ci-settings
43  script:
44    - lib/petsc/bin/maint/check-ci-settings.sh
45#
46#  This provides the basic order of operations and options template for cloud based stage 1 tests.
47#  Not all test-short need to follow this template but most will.
48#
49
50.stage-1:
51  extends: .test
52  stage: stage-1
53  tags:
54    - stage1
55  before_script:
56    - date
57    - hostname
58    - grep PRETTY_NAME /etc/os-release
59    - nproc
60    - lscpu
61    - ccache --zero-stats
62    - echo ${CONFIG_OPTS}
63  script:
64    - printf "PATH:$PATH\n"
65    - printf "PYTHONPATH:$PYTHONPATH\n"
66    - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n"
67    - if [ ! -z ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME+x} ]; then printf "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\n" ;fi
68    - ${PYTHON} ./configure --with-debugging=0 COPTFLAGS='-O -march=native' CXXOPTFLAGS='-O -march=native' FOPTFLAGS='-O -march=native' ${CONFIG_OPTS}
69    - make CFLAGS=-Werror CXXFLAGS="-Werror -Wzero-as-null-pointer-constant" FFLAGS=-Werror
70    - make CFLAGS=-Werror CXXFLAGS=-Werror FFLAGS=-Werror allgtests-tap search="${TEST_SEARCH}" TIMEOUT=${TIMEOUT}
71  after_script:
72    - date
73    - ccache --show-stats
74  artifacts:
75    reports:
76      junit: arch-*/tests/testresults.xml
77    name: "$CI_JOB_NAME"
78    when: always
79    paths:
80    - arch-*/lib/petsc/conf/*.log
81    - arch-*/lib/pkgconfig/PETSc.pc
82    - arch-*/tests/testresults.xml
83    - arch-*/tests/test_*_tap.log
84    - arch-*/tests/test_*_err.log
85    expire_in: 4 days
86
87#
88# The following tests run on the cloud as part of stage-1.
89#
90
91mpich-cxx-py3:
92  extends: .stage-1
93  tags:
94  - stage1, fedora
95  variables:
96    PYTHON: python3
97    CONFIG_OPTS: --with-mpi-dir=/home/glci/soft/mpich-3.3.2 --with-clanguage=cxx --with-fc=0
98    TEST_SEARCH: snes_tutorials-ex48%
99
100uni-complex-float-int64:
101  extends: .stage-1
102  variables:
103    PYTHON: python3
104    CONFIG_OPTS: --with-mpi=0 --with-scalar-type=complex --with-precision=single --with-64-bit-indices
105    TEST_SEARCH: ts_tutorials-ex11_adv_2d_quad_%
106
107c99-mlib-static-py2:
108  extends: .stage-1
109  variables:
110    PYTHON: python2
111    CONFIG_OPTS: --with-mpi-dir=/home/glci/soft/mpich-3.3.2 --with-single-library=0 --with-shared-libraries=0 CFLAGS=-std=c99
112    TEST_SEARCH: snes_tutorials-ex19%
113
114checksource:
115  extends: .test
116  stage: .pre
117  tags:
118    - stage1
119  script:
120    - python3 ./configure --with-mpi=0 --with-fc=0 --with-cxx=0
121    - make checkbadSource SHELL=bash
122    - make -f gmakefile check_output SHELL=bash
123
124pause-for-approval:
125  extends: .test
126  stage: .pre
127  tags:
128    - stage1
129  only:
130    refs:
131      - merge_requests
132    variables:
133      - $CI_MERGE_REQUEST_EVENT_TYPE == "merged_result"
134      - $CI_MERGE_REQUEST_EVENT_TYPE == "detached"
135  script:
136    - echo "pause-for-approval has no script to run"
137  variables:
138    GIT_STRATEGY: none
139  when: manual
140  allow_failure: false
141
142check-py-vermin:
143  extends: .test
144  stage: .pre
145  tags:
146    - stage1
147  script:
148    - vermin -vv  -t=2.6- -t=3.4- config
149#
150# This provides the basic order of operations and options template for stage-2,3 tests.
151# Not all stage-2,3 need to follow this template, but most will.
152#
153.stage-23:
154  extends: .test
155  script:
156    - printf "PATH:$PATH\n"
157    - printf "PYTHONPATH:$PYTHONPATH\n"
158    - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n"
159    - if [ ! -z ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME+x} ]; then printf "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\n" ;fi
160    - printf "./config/examples/${TEST_ARCH}.py\n"
161    - cat ./config/examples/${TEST_ARCH}.py
162    - ./config/examples/${TEST_ARCH}.py
163    - make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}"
164    - make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" check
165    - make updatedatafiles
166    - if [ -z ${DISABLE_PETSC4PY_TESTS+x} ]; then if [ -z ${ENABLE_PETSC4PY_LDPRELOAD+x} ]; then echo "NOT using LD_PRELOAD"; make petsc4pytest; else echo "using LD_PRELOAD"; LD_PRELOAD=${PWD}/${TEST_ARCH}/lib/libpetsc.so make petsc4pytest; fi; fi
167    - if [ -z ${DISABLE_TESTS+x} ]; then make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" cleantest allgtests-tap TIMEOUT=${TIMEOUT}  ${TEST_OPTS}; fi
168    - if [ ! -z ${RUN_GCOV+x} ]; then make gcov && bash <(curl -s https://codecov.io/bash) -c > /dev/null 2>&1; fi
169  artifacts:
170    reports:
171      junit: ${TEST_ARCH}/tests/testresults.xml
172    name: "$CI_JOB_NAME"
173    when: always
174    paths:
175    - ${TEST_ARCH}/lib/petsc/conf/*.log
176    - ${TEST_ARCH}/lib/pkgconfig/PETSc.pc
177    - ${TEST_ARCH}/tests/testresults.xml
178    - ${TEST_ARCH}/tests/test_${TEST_ARCH}_tap.log
179    - ${TEST_ARCH}/tests/test_${TEST_ARCH}_err.log
180    - ${TEST_ARCH}/gcov.tar.gz
181    expire_in: 4 days
182  variables:
183    OPENBLAS_NUM_THREADS: 1
184
185.stage-2:
186  extends: .stage-23
187  stage: stage-2
188
189.stage-3:
190  extends: .stage-23
191  stage: stage-3
192
193#
194# The following provide templates for various OSes for pre/post info
195#
196
197.linux_test_noflags:
198  before_script:
199    - date
200    - hostname
201    - grep PRETTY_NAME /etc/os-release
202    - nproc
203    - lscpu
204    - ccache --zero-stats
205    - if [ ! -z ${LOAD_MODULES+x} ]; then module --trace load ${LOAD_MODULES}; module list; fi
206    - if [ ! -z ${INIT_SCRIPT+x} ]; then echo "sourcing ${INIT_SCRIPT}"; source ${INIT_SCRIPT}; fi
207  after_script:
208    - date
209    - ccache --show-stats
210
211.linux_test_nofflags:
212  extends: .linux_test_noflags
213  variables:
214    MAKE_CFLAGS: -Werror
215    MAKE_CXXFLAGS: -Werror
216
217.linux_test:
218  extends: .linux_test_noflags
219  variables:
220    MAKE_CFLAGS: -Werror
221    MAKE_CXXFLAGS: -Werror
222    MAKE_FFLAGS: -Werror
223
224.freebsd_test:
225  variables:
226    MAKE_CFLAGS: -Werror
227    MAKE_CXXFLAGS: -Werror
228    MAKE_FFLAGS: -Werror
229  before_script:
230    - date
231    - hostname
232    - freebsd-version
233    - echo $(sysctl -n hw.ncpu)
234    - ccache --zero-stats
235  after_script:
236    - date
237    - ccache --show-stats
238
239.osx_test:
240  variables:
241    MAKE_CFLAGS: -Werror
242    MAKE_CXXFLAGS: -Werror
243    MAKE_FFLAGS: -Werror
244  before_script:
245    - date
246    - hostname
247    - sw_vers -productVersion
248    - echo $(sysctl -n hw.ncpu)
249    - ccache --zero-stats
250  after_script:
251    - date
252    - ccache --show-stats
253
254.opensolaris_test:
255  before_script:
256    - date
257    - hostname
258    - uname -a
259    - nproc
260    - isainfo -x
261  after_script:
262    - date
263
264.mswin_test:
265  before_script:
266    - date
267    - hostname
268    - uname -a
269    - nproc
270  after_script:
271    - date
272
273#
274# The following tests run as part of stage-2.
275#
276# The tags variable used in the tests below connects the particular test with the runners
277# listed on the left hand side of https://gitlab.com/petsc/petsc/-/settings/ci_cd.
278# For example the test linux-sycl-double  any runner that has the tag 'name:pj01'
279# (in a blue box beneath it)
280#
281
282freebsd-cxx-cmplx-64idx-dbg:
283  extends:
284    - .stage-2
285    - .freebsd_test
286  tags:
287    - os:fbsd
288  variables:
289    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg
290
291freebsd-c-single-opt:
292  extends:
293    - .stage-2
294    - .freebsd_test
295  tags:
296    - os:fbsd
297  variables:
298    TEST_ARCH: arch-ci-freebsd-c-single-opt
299
300linux-cuda-double:
301  extends:
302    - .stage-3
303    - .linux_test
304  tags:
305    - gpu:nvidia, os:linux, name:p1
306  variables:
307    TEST_ARCH: arch-ci-linux-cuda-double
308
309linux-gcc-quad-64idx-dbg:
310  extends:
311    - .stage-2
312    - .linux_test
313  tags:
314    - linux-stage2
315  variables:
316    TEST_ARCH: arch-ci-linux-gcc-quad-64idx-dbg
317
318linux-gcc-pkgs-opt:
319  extends:
320    - .stage-2
321    - .linux_test
322  tags:
323    - linux-stage2
324  variables:
325    TEST_ARCH: arch-ci-linux-gcc-pkgs-opt
326
327linux-gcc-complex-opt-32bit:
328  extends:
329    - .stage-2
330    - .linux_test
331  tags:
332    - linux-stage2
333  variables:
334    TEST_ARCH: arch-ci-linux-gcc-complex-opt-32bit
335
336mswin-uni:
337  extends:
338    - .stage-2
339    - .mswin_test
340  tags:
341    - win-stage2
342  variables:
343    TEST_ARCH: arch-ci-mswin-uni
344
345mswin-gnu:
346  extends:
347    - .stage-2
348    - .mswin_test
349  tags:
350    - win-stage2
351  variables:
352    TEST_ARCH: arch-ci-mswin-gnu
353    MAKE_CFLAGS: -Werror
354    MAKE_CXXFLAGS: -Werror
355    MAKE_FFLAGS: -Werror
356    DISABLE_TESTS: 1
357  artifacts:
358    reports:
359    paths:
360    - arch-*/lib/petsc/conf/*.log
361    expire_in: 4 days
362
363#
364# The following tests run as part of stage-3.
365#
366
367freebsd-cxx-cmplx-pkgs-dbg:
368  extends:
369    - .stage-3
370    - .freebsd_test
371  tags:
372    - os:fbsd
373  variables:
374    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg
375
376freebsd-cxx-pkgs-opt:
377  extends:
378    - .stage-3
379    - .freebsd_test
380  tags:
381    - os:fbsd
382  variables:
383    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent -vecscatter_mpi1 false -options_left false
384    TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt
385
386freebsd-pkgs-opt:
387  extends:
388    - .stage-3
389    - .freebsd_test
390  tags:
391    - os:fbsd
392  variables:
393    TEST_ARCH: arch-ci-freebsd-pkgs-opt
394
395linux-hip-double:
396  extends:
397    - .stage-3
398    - .linux_test
399  tags:
400    - gpu:amd, os:linux, name:hip-txcorp
401  variables:
402    PATH: /opt/rh/devtoolset-7/root/usr/bin:/opt/rocm/bin:/opt/rocm/llvm/bin:/usr/sbin:/usr/bin:/sbin:/bin
403    TEST_ARCH: arch-ci-linux-hip-double
404
405linux-sycl-double:
406  extends:
407    - .stage-3
408    - .linux_test_nofflags
409  tags:
410    - os:linux, name:pj01
411  variables:
412    TEST_ARCH: arch-ci-linux-sycl-double
413    INIT_SCRIPT: /home/glci/bin/ci-inteloneapi.sh
414    DISABLE_TESTS: 1
415
416linux-c-exodus-dbg:
417  extends:
418    - .stage-3
419    - .linux_test
420  tags:
421    - gpu:nvidia, os:linux, name:frog
422  variables:
423    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -use_gpu_aware_mpi 0
424    TEST_ARCH: arch-ci-linux-c-exodus-dbg
425    RUN_GCOV: 1
426    TEST_OPTS: -j1 query=requires queryval=cuda
427
428linux-cuda11-double:
429  extends:
430    - .stage-3
431    - .linux_test
432  tags:
433    - gpu:nvidia, os:linux, name:frog
434  variables:
435    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -use_gpu_aware_mpi 0
436    TEST_ARCH: arch-ci-linux-cuda11-double
437    TEST_OPTS: -j1 query=requires queryval=cuda
438
439linux-cuda11-complex:
440  extends:
441    - .stage-3
442    - .linux_test
443  tags:
444    - gpu:nvidia, os:linux, name:frog
445  variables:
446    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -use_gpu_aware_mpi 0
447    TEST_ARCH: arch-ci-linux-cuda11-complex
448    TEST_OPTS: -j1 query=requires queryval=cuda
449
450linux-cuda-double-64idx:
451  extends:
452    - .stage-2
453    - .linux_test
454  tags:
455    - gpu:nvidia, os:linux, name:p1
456  variables:
457    TEST_ARCH: arch-ci-linux-cuda-double-64idx
458    TEST_OPTS: -j1 query=requires queryval=cuda
459
460linux-cuda-single-cxx:
461  extends:
462    - .stage-3
463    - .linux_test
464  tags:
465    - gpu:nvidia, os:linux
466  variables:
467    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -use_gpu_aware_mpi 0
468    TEST_ARCH: arch-ci-linux-cuda-single-cxx
469    TEST_OPTS: -j1 query=requires queryval=cuda
470
471linux-cuda-uni-pkgs:
472  extends:
473    - .stage-3
474    - .linux_test
475  tags:
476    - gpu:nvidia, os:linux
477  variables:
478    TEST_ARCH: arch-ci-linux-cuda-uni-pkgs
479    TEST_OPTS: -j4 query=requires queryval=cuda
480
481linux-viennacl:
482  extends:
483    - .stage-3
484    - .linux_test
485  tags:
486    - gpu:nvidia, os:linux
487  variables:
488    TEST_ARCH: arch-ci-linux-viennacl
489    MAKE_CXXFLAGS: -Werror -Wno-ignored-attributes
490    TEST_OPTS: -j1 query=requires queryval=viennacl
491
492linux-without-fc:
493  extends:
494    - .stage-3
495    - .linux_test
496  tags:
497    - gce-nfs
498  variables:
499    TEST_ARCH: arch-ci-linux-without-fc
500
501linux-cmplx-single:
502  extends:
503    - .stage-3
504    - .linux_test
505  tags:
506    - name:si
507  variables:
508    TEST_ARCH: arch-ci-linux-cmplx-single
509
510linux-gcc-cxx-avx2:
511  extends:
512    - .stage-3
513    - .linux_test
514  tags:
515    - name:isdp001
516  variables:
517    TEST_ARCH: arch-ci-linux-gcc-cxx-avx2
518
519linux-clang-avx:
520  extends:
521    - .stage-3
522    - .linux_test
523  tags:
524    - name:isdp001
525  variables:
526    TEST_ARCH: arch-ci-linux-clang-avx
527
528linux-knl:
529  extends:
530    - .stage-3
531    - .linux_test
532  tags:
533    - name:isdp001
534  variables:
535    TEST_ARCH: arch-ci-linux-knl
536
537linux-intel-mkl-single:
538  extends:
539    - .stage-3
540    - .linux_test_nofflags
541  tags:
542    - name:isdp001
543  variables:
544    TEST_ARCH: arch-ci-linux-intel-mkl-single
545
546linux-cxx-cmplx-pkgs-64idx:
547  extends:
548    - .stage-3
549    - .linux_test
550  tags:
551    - gce-nfs
552  variables:
553    TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx
554    LOAD_MODULES: llvm/9.0.0-7fyffox gcc/8.3.0-fjpc5ys cmake/3.14.2-rl3q676
555
556# Set env vars for 'Kokkos + OpenMP' tests, so that they won't give warnings
557linux-pkgs-dbg-ftn-interfaces:
558  extends:
559    - .stage-3
560    - .linux_test
561  tags:
562    - gce-nfs
563  variables:
564    TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces
565    OMP_PROC_BIND: "false"
566    OMP_NUM_THREADS: 4
567
568linux-pkgs-cxx-mlib:
569  extends:
570    - .stage-3
571    - .linux_test
572  tags:
573    - gce-nfs
574  variables:
575    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
576    TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib
577
578linux-pkgs-valgrind:
579  extends:
580    - .stage-3
581    - .linux_test
582  tags:
583    - gce-nfs, linux-fast
584  variables:
585    TEST_ARCH: arch-ci-linux-pkgs-valgrind
586    TIMEOUT: 7200
587
588linux-pkgs-opt:
589  extends:
590    - .stage-3
591    - .linux_test
592  tags:
593    - gce-nfs, linux-fast
594  variables:
595    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
596    TEST_ARCH: arch-ci-linux-pkgs-opt
597    LOAD_MODULES: gcc/10.1.0-5hiqhdh
598
599linux-pkgs-gcov:
600  extends:
601    - .stage-3
602    - .linux_test
603  tags:
604    - gce-nfs, linux-gcov
605  variables:
606    TEST_ARCH: arch-ci-linux-pkgs-gcov
607    RUN_GCOV: 1
608
609linux-cmplx-gcov:
610  extends:
611    - .stage-3
612    - .linux_test
613  tags:
614    - gce-nfs, linux-gcov
615  variables:
616    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -vecscatter_mpi1 false -options_left false
617    TEST_ARCH: arch-ci-linux-cmplx-gcov
618    LOAD_MODULES: gcc/8.3.0-fjpc5ys
619    RUN_GCOV: 1
620
621linux-matlab-ilp64-gcov:
622  extends:
623    - .stage-3
624    - .linux_test
625  tags:
626    - gce-nfs, linux-gcov
627  variables:
628    TEST_ARCH: arch-ci-linux-matlab-ilp64-gcov
629    LOAD_MODULES: matlab/R2018a
630    RUN_GCOV: 1
631  allow_failure: true
632
633linux-gcov:
634  extends:
635    - .stage-3
636    - .linux_test
637  tags:
638    - gce-nfs, linux-gcov
639  variables:
640    TEST_ARCH: arch-ci-linux-gcov
641    RUN_GCOV: 1
642
643linux-pgi:
644  extends:
645    - .stage-3
646    - .linux_test_noflags
647  tags:
648    - gce-nfs, linux-mcpu
649  variables:
650    TEST_ARCH: arch-ci-linux-pgi
651    LOAD_MODULES: hpc_sdk/20.9
652
653linux-nagfor:
654  extends:
655    - .stage-3
656    - .linux_test_nofflags
657  tags:
658    - gce-nfs, linux-mcpu
659  variables:
660    PATH: /usr/lib/ccache:/home/svcpetsc/.local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/nfs/gce/projects/petsc/soft/nag/6.1/bin
661    NAG_KUSARI_FILE: licman1.mcs.anl.gov:7733
662    TEST_ARCH: arch-ci-linux-nagfor
663
664linux-intel-cmplx:
665  extends:
666    - .stage-3
667    - .linux_test_nofflags
668  tags:
669    - gce-nfs
670  variables:
671    TEST_ARCH: arch-ci-linux-intel-cmplx
672    LOAD_MODULES: intel-mkl/19.5 intel/19.0-nompilib
673    ENABLE_PETSC4PY_LDPRELOAD: 1
674
675linux-xsdk-dbg:
676  extends:
677    - .stage-3
678    - .linux_test
679  tags:
680    - gce-nfs
681  variables:
682    TEST_ARCH: arch-ci-linux-xsdk-dbg
683    LOAD_MODULES: gcc/8.3.0-fjpc5ys
684
685linux-analyzer:
686  extends:
687    - .stage-3
688    - .linux_test
689  tags:
690    - gce-nfs
691  variables:
692    TEST_ARCH: arch-ci-linux-analyzer
693
694linux-intel:
695  extends:
696    - .stage-3
697    - .linux_test_nofflags
698  tags:
699    - gce-nfs
700  variables:
701    TEST_ARCH: arch-ci-linux-intel
702    LOAD_MODULES: intel-mkl/19.5 intel/19.0-nompilib
703
704linux-opt-misc:
705  extends:
706    - .stage-3
707    - .linux_test
708  tags:
709    - gce-nfs
710  variables:
711    TEST_ARCH: arch-ci-linux-opt-misc
712    LOAD_MODULES: gcc/6.5.0-57usejd
713
714linux-pkgs-64idx:
715  extends:
716    - .stage-3
717    - .linux_test
718  tags:
719    - gce-nfs
720  variables:
721    TEST_ARCH: arch-ci-linux-pkgs-64idx
722    LOAD_MODULES: cmake/3.15.5-fh74toq
723
724linux-64idx-i8:
725  extends:
726    - .stage-3
727    - .linux_test
728  tags:
729    - gce-nfs
730  variables:
731    TEST_ARCH: arch-ci-linux-64idx-i8
732
733linux-gcc-ifc-cmplx:
734  extends:
735    - .stage-3
736    - .linux_test_nofflags
737  tags:
738    - gce-nfs
739  variables:
740    TEST_ARCH: arch-ci-linux-gcc-ifc-cmplx
741    LOAD_MODULES: intel/19.0-nompilib
742
743linux-opt-cxx-quad:
744  extends:
745    - .stage-3
746    - .linux_test
747  tags:
748    - gce-nfs
749  variables:
750    TEST_ARCH: arch-ci-linux-opt-cxx-quad
751
752linux-ILP64:
753  extends:
754    - .stage-3
755    - .linux_test
756  tags:
757    - gce-nfs
758  variables:
759    TEST_ARCH: arch-ci-linux-ILP64
760    LOAD_MODULES: gcc/6.5.0-57usejd
761
762linux-64idx-i8-uni:
763  extends:
764    - .stage-3
765    - .linux_test
766  tags:
767    - gce-nfs
768  variables:
769    TEST_ARCH: arch-ci-linux-64idx-i8-uni
770
771mswin-intel-cxx-cmplx:
772  extends:
773    - .stage-3
774    - .mswin_test
775  tags:
776    - os:win
777  variables:
778    TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx
779
780mswin-intel:
781  extends:
782    - .stage-3
783    - .mswin_test
784  tags:
785    - os:win
786  variables:
787    TEST_ARCH: arch-ci-mswin-intel
788
789mswin-opt-impi:
790  extends:
791    - .stage-3
792    - .mswin_test
793  tags:
794    - os:win
795  variables:
796    TEST_ARCH: arch-ci-mswin-opt-impi
797    DISABLE_TESTS: 1
798
799opensolaris-pkgs-opt:
800  extends:
801    - .stage-3
802    - .opensolaris_test
803  tags:
804    - name:n-gage
805  variables:
806    TEST_ARCH: arch-ci-opensolaris-pkgs-opt
807
808opensolaris-cmplx-pkgs-dbg:
809  extends:
810    - .stage-3
811    - .opensolaris_test
812  tags:
813    - name:n-gage
814  variables:
815    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
816
817opensolaris-misc:
818  extends:
819    - .stage-3
820    - .opensolaris_test
821  tags:
822    - name:n-gage
823  variables:
824    TEST_ARCH: arch-ci-opensolaris-misc
825
826osx-cxx-cmplx-pkgs-dbg:
827  extends:
828    - .stage-3
829    - .osx_test
830  tags:
831    - os:macos
832  variables:
833    TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg
834
835osx-cxx-pkgs-opt:
836  extends:
837    - .stage-3
838    - .osx_test
839  tags:
840    - os:macos, opt
841  variables:
842    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent -vecscatter_mpi1 false -options_left false
843    TEST_ARCH: arch-ci-osx-cxx-pkgs-opt
844    MAKE_CXXFLAGS: -Werror -Wno-pass-failed
845
846osx-dbg:
847  extends:
848    - .stage-3
849    - .osx_test
850  tags:
851    - os:macos
852  variables:
853    TEST_ARCH: arch-ci-osx-dbg
854
855osx-xsdk-opt:
856  extends:
857    - .stage-3
858    - .osx_test
859  tags:
860    - os:macos, opt
861  variables:
862    TEST_ARCH: arch-ci-osx-xsdk-opt
863
864# job for analyzing the final coverage results
865analyze-pipeline:
866  extends: .test
867  stage: .post
868  tags:
869    - gce-nfs
870  dependencies:
871    - linux-c-exodus-dbg
872    - linux-pkgs-gcov
873    - linux-cmplx-gcov
874    - linux-matlab-ilp64-gcov
875    - linux-gcov
876  variables:
877    PETSC_ARCH: arch-ci-analyze-pipeline
878  before_script:
879    - date
880    - hostname
881  script:
882  - ./configure --with-mpi=0 --with-cxx=0 --with-c2html
883  - make srchtml
884  - make mergegcov
885  artifacts:
886    name: "$CI_JOB_NAME"
887    when: always
888    paths:
889    - arch-ci-analyze-pipeline/*
890    expire_in: 4 days
891
892.docs-review-base:
893  extends: .test
894  image: python:3.9
895  only:
896    variables:
897      - $CI_MERGE_REQUEST_LABELS =~ /^doc|,doc/
898  before_script:
899    - apt-get update
900    - apt-get install -y --no-install-recommends librsvg2-bin
901    - apt-get install -y flex
902    - pip install -r src/docs/sphinx_docs/requirements.txt
903  script:
904    - cd src/docs/sphinx_docs && sphinx-build -T -E -b html -D language=en -j auto . ../../../public
905  artifacts:
906    paths:
907      - public
908  environment:
909    name: review/$CI_COMMIT_REF_NAME
910    url: https://$CI_PROJECT_NAMESPACE.gitlab.io/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/public/index.html
911
912docs-only-review:
913  stage: .pre
914  extends: .docs-review-base
915  only:
916    variables:
917      - $CI_MERGE_REQUEST_LABELS =~ /(^|,)docs-only($|,)/
918
919docs-review:
920  stage: stage-2
921  extends: .docs-review-base
922  only:
923    variables:
924      - $CI_MERGE_REQUEST_LABELS =~ /(^|,)docs($|,)/
925  except:
926    variables:
927      - $CI_MERGE_REQUEST_LABELS =~ /(^|,)docs-only($|,)/
928
929#
930#
931# The following tests are experimental; more tests by users at other sites may be added below this.  Experimental test
932# that fail produce a warning, but do not block execution of a pipeline.
933#
934
935.test-experimental:
936  extends: .test
937  allow_failure: true
938
939