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