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