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