xref: /petsc/.gitlab-ci.yml (revision 29b5c1159092c0c4e109657cced02aef37644e8e)
1#
2# stage-1 take only a few minutes and generally run on the cloud; 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#         (not yet implemented)
8#
9# The stage-(n) tests are only started if all of the stage-(n-1) tests run without error
10#   You can limit the testing by using the variable STAGE with value 1 or 2
11#
12# By default the test branch is merged to master before testing. (not yet implemented)
13#   You can limite this by using the variable MERGETOMASTER with value 0 (not yet implemented)
14#
15
16stages:
17  - stage-1
18  - stage-2
19  - stage-3
20variables:
21  GIT_STRATEGY: fetch
22  GIT_CLEAN_FLAGS: -ffdxq
23  PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
24  TIMEOUT: 600
25
26#
27# The most basic template that most tests will expand upon. In particular merge requests and branch pushes DO NOT trigger testing
28#
29
30.test:
31  only:
32    refs:
33#     Set with CI/CD Shedules - New Schedule
34      - schedules
35#     Set with CI/CD Pipelines - Run Pipeline
36      - web
37
38#
39#  This provides the basic order of operations and options template for cloud based stage 1 tests.
40#  Not all test-short need to follow this template but most will.
41#
42
43.stage-1:
44  extends: .test
45  stage: stage-1
46  image: jedbrown/mpich-ccache
47  before_script:
48    - echo nproc=$(nproc)
49    - cat /proc/cpuinfo
50    - export CCACHE_COMPILERCHECK=content
51    - export CCACHE_DIR=$(pwd)/.ccache
52    - ccache --show-stats
53    - ccache --zero-stats
54  script:
55    - ${PYTHON} ./configure --with-debugging=0 COPTFLAGS='-O -march=native' CXXOPTFLAGS='-O -march=native' FOPTFLAGS='-O -march=native' ${CONFIG_OPTS}
56    - make CFLAGS=-Werror
57    - make allgtests-tap search="${TEST_SEARCH}" TIMEOUT=${TIMEOUT}
58  after_script:
59    - CCACHE_DIR=$(pwd)/.ccache ccache --show-stats
60  artifacts:
61    reports:
62      junit: arch-*/tests/testresults.xml
63  cache:
64    paths:
65      - .ccache/
66    key: "${CI_JOB_NAME}"
67
68#
69# The following tests run on the cloud as part of stage-1.
70#
71
72mpich-cxx-py3:
73  extends: .stage-1
74  variables:
75    PYTHON: python3
76    CONFIG_OPTS: --with-mpi-dir=/usr/local --with-clanguage=cxx --with-fc=0
77    TEST_SEARCH: snes_tutorials-ex48%
78
79uni-complex-float-int64:
80  extends: .stage-1
81  variables:
82    PYTHON: python3
83    CONFIG_OPTS: <
84      --with-mpi=0
85      --with-scalar-type=complex --with-precision=single --with-64-bit-indices
86    TEST_SEARCH: ts_tutorials-ex11_adv_2d_quad_%
87
88c89-mlib-static-py2:
89  extends: .stage-1
90  image: jedbrown/mpich-ccache:python2
91  variables:
92    PYTHON: python2
93    CONFIG_OPTS: <
94      --with-mpi-dir=/usr/local
95      --with-single-library=0 --with-shared-libraries=0 'CFLAGS=-std=c89 -pedantic -Wno-long-long -Wno-overlength-strings'
96    TEST_SEARCH: snes_tutorials-ex48%
97
98checksource:
99  extends: .test
100  image: jedbrown/mpich-ccache
101  stage: stage-1
102  script:
103    - python3 ./configure --with-mpi=0 --with-fc=0 --with-cxx=0
104    - make checkbadSource SHELL=bash
105
106#
107# This provides the basic order of operations and options template for stage-2,3 tests.
108# Not all stage-2,3 need to follow this template, but most will.
109#
110.stage-23:
111  extends: .test
112  script:
113    - printf "PATH:$PATH\n"
114    - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n"
115    - printf "./config/examples/${TEST_ARCH}.py\n"
116    - cat ./config/examples/${TEST_ARCH}.py
117    - ./config/examples/${TEST_ARCH}.py
118    - make
119    - make check
120    - make cleantest allgtests-tap TIMEOUT=${TIMEOUT}
121  artifacts:
122    reports:
123      junit: ${TEST_ARCH}/tests/testresults.xml
124
125.stage-2:
126  extends: .stage-23
127  stage: stage-2
128  only:
129    variables:
130      - $STAGE != "1"
131      - $STAGE != "3"
132
133.stage-3:
134  extends: .stage-23
135  stage: stage-3
136  only:
137    variables:
138      - $STAGE != "1"
139      - $STAGE != "2"
140
141#
142# The following provide templates for various OSes for pre/post info
143#
144
145.linux_test:
146  before_script:
147    - hostname
148    - grep PRETTY_NAME /etc/os-release
149    - echo $(nproc)
150    - ccache --zero-stats
151  after_script:
152    - ccache --show-stats
153
154.freebsd_test:
155  before_script:
156    - hostname
157    - freebsd-version
158    - echo $(sysctl -n hw.ncpu)
159    - ccache --zero-stats
160  after_script:
161    - ccache --show-stats
162
163.osx_test:
164  before_script:
165    - hostname
166    - sw_vers -productVersion
167    - echo $(sysctl -n hw.ncpu)
168    - ccache --zero-stats
169  after_script:
170    - ccache --show-stats
171
172.opensolaris_test:
173  before_script:
174    - hostname
175    - uname -a
176    - echo $(nproc)
177
178.mswin_test:
179  before_script:
180    - hostname
181    - uname -a
182    - echo $(nproc)
183
184#
185# The following tests run as part of stage-2.
186#
187# The tags variable used in the tests below connects the particular test with the runners
188# listed on the left hand side of https://gitlab.com/petsc/petsc/-/settings/ci_cd.
189# For example the test linux-gcc-complex-opt  any runner that has the tag 'name:pj02'
190# (in a blue box beneath it)
191#
192
193linux-gcc-complex-opt:
194  extends:
195    - .stage-2
196    - .linux_test
197  tags:
198    - linux-dell
199  variables:
200    TEST_ARCH: arch-ci-linux-gcc-complex-opt
201
202linux-gcc-pkgs-opt:
203  extends:
204    - .stage-2
205    - .linux_test
206  tags:
207    - linux-dell
208  variables:
209    TEST_ARCH: arch-ci-linux-gcc-pkgs-opt
210
211linux-gcc-quad-64idx-dbg:
212  extends:
213    - .stage-2
214    - .linux_test
215  tags:
216    - linux-dell
217  variables:
218    TEST_ARCH: arch-ci-linux-gcc-quad-64idx-dbg
219
220linux-cuda-double:
221  extends:
222    - .stage-2
223    - .linux_test
224  tags:
225    - name:frog
226  variables:
227    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
228    TEST_ARCH: arch-ci-linux-cuda-double
229
230freebsd-c-single-opt:
231  extends:
232    - .stage-2
233    - .freebsd_test
234  tags:
235    - os:fbsd
236  variables:
237    TEST_ARCH: arch-ci-freebsd-c-single-opt
238
239freebsd-cxx-cmplx-64idx-dbg:
240  extends:
241    - .stage-2
242    - .freebsd_test
243  tags:
244    - name:petsc-fbsd
245  variables:
246    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg
247
248opensolaris-misc:
249  extends:
250    - .stage-2
251    - .opensolaris_test
252  tags:
253    - name:n-gage
254  variables:
255    TEST_ARCH: arch-ci-opensolaris-misc
256
257osx-cxx-pkgs-opt:
258  extends:
259    - .stage-2
260    - .osx_test
261  tags:
262    - os:osx
263  variables:
264    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
265    TEST_ARCH: arch-ci-osx-cxx-pkgs-opt
266
267osx-barry:
268  extends:
269    - .stage-2
270    - .osx_test
271  tags:
272    - os:osx
273  variables:
274    TEST_ARCH: arch-ci-osx-prefix
275
276mswin-uni:
277  extends:
278    - .stage-2
279    - .mswin_test
280  tags:
281    - name:ps5
282  variables:
283    TEST_ARCH: arch-ci-mswin-uni
284
285#
286# The following tests run as part of stage-3.
287#
288
289mswin-intel-cxx-cmplx:
290  extends:
291    - .stage-3
292    - .mswin_test
293  tags:
294    - name:ps5
295  variables:
296    TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx
297
298mswin-intel:
299  extends:
300    - .stage-3
301    - .mswin_test
302  tags:
303    - name:ps5
304  variables:
305    TEST_ARCH: arch-ci-mswin-intel
306
307arch-ci-mswin-opt-impi:
308  extends:
309    - .stage-3
310    - .mswin_test
311  tags:
312    - name:ps4
313  variables:
314    TEST_ARCH: arch-ci-mswin-opt-impi
315  allow_failure: true
316
317
318opensolaris-cmplx-pkgs-dbg:
319  extends:
320    - .stage-3
321    - .opensolaris_test
322  tags:
323    - name:n-gage
324  variables:
325    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
326
327opensolaris-pkgs-opt:
328  extends:
329    - .stage-3
330    - .opensolaris_test
331  tags:
332    - name:n-gage
333  variables:
334    TEST_ARCH: arch-ci-opensolaris-pkgs-opt
335
336freebsd-pkgs-opt:
337  extends:
338    - .stage-3
339    - .freebsd_test
340  tags:
341    - os:fbsd
342  variables:
343    TEST_ARCH: arch-ci-freebsd-pkgs-opt
344
345freebsd-cxx-cmplx-pkgs-dbg:
346  extends:
347    - .stage-3
348    - .freebsd_test
349  tags:
350    - os:fbsd
351  variables:
352    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg
353
354freebsd-cxx-pkgs-opt:
355  extends:
356    - .stage-3
357    - .freebsd_test
358  tags:
359    - os:fbsd
360  variables:
361    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
362    TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt
363
364osx-cxx-cmplx-pkgs-dbg:
365  extends:
366    - .stage-3
367    - .osx_test
368  tags:
369    - os:osx
370  variables:
371    TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg
372
373osx-dbg:
374  extends:
375    - .stage-3
376    - .osx_test
377  tags:
378    - os:osx
379  variables:
380    TEST_ARCH: arch-ci-osx-dbg
381
382osx-xsdk-opt:
383  extends:
384    - .stage-3
385    - .osx_test
386  tags:
387    - os:osx
388  variables:
389    TEST_ARCH: arch-ci-osx-xsdk-opt
390
391linux-cmplx-gcov:
392  extends:
393    - .stage-3
394    - .linux_test
395  tags:
396    - mcs-nfs
397  variables:
398    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -vecscatter_mpi1 false -options_left false
399    TEST_ARCH: arch-ci-linux-cmplx-gcov
400
401linux-cmplx-single:
402  extends:
403    - .stage-3
404    - .linux_test
405  tags:
406    - name:si
407  variables:
408    TEST_ARCH: arch-ci-linux-cmplx-single
409
410linux-without-fc:
411  extends:
412    - .stage-3
413    - .linux_test
414  tags:
415    - name:si
416  variables:
417    TEST_ARCH: arch-ci-linux-without-fc
418
419linux-clang-avx:
420  extends:
421    - .stage-3
422    - .linux_test
423  tags:
424    - name:isdp001
425  variables:
426    TEST_ARCH: arch-ci-linux-clang-avx
427
428linux-gcc-cxx-avx2:
429  extends:
430    - .stage-3
431    - .linux_test
432  tags:
433    - name:isdp001
434  variables:
435    TEST_ARCH: arch-ci-linux-gcc-cxx-avx2
436
437linux-knl:
438  extends:
439    - .stage-3
440    - .linux_test
441  tags:
442    - name:isdp001
443  variables:
444    TEST_ARCH: arch-ci-linux-knl
445
446linux-c-exodus-dbg:
447  extends:
448    - .stage-3
449    - .linux_test
450  tags:
451    - name:frog
452  variables:
453    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
454    TEST_ARCH: arch-ci-linux-c-exodus-dbg
455
456linux-cuda-single:
457  extends:
458    - .stage-3
459    - .linux_test
460  tags:
461    - name:frog
462  variables:
463    OPENBLAS_NUM_THREADS: 1
464    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
465    TEST_ARCH: arch-ci-linux-cuda-single
466
467linux-viennacl:
468  extends:
469    - .stage-3
470    - .linux_test
471  tags:
472    - name:frog
473  variables:
474    TEST_ARCH: arch-ci-linux-viennacl
475
476linux-opt-misc:
477  extends:
478    - .stage-3
479    - .linux_test
480  tags:
481    - mcs-nfs,name:cg
482  variables:
483    OPENBLAS_NUM_THREADS: 1
484    TEST_ARCH: arch-ci-linux-opt-misc
485
486linux-pkgs-cxx-mlib:
487  extends:
488    - .stage-3
489    - .linux_test
490  tags:
491    - name:pj02
492  variables:
493    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
494    TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib
495
496linux-cxx-cmplx-pkgs-64idx:
497  extends:
498    - .stage-3
499    - .linux_test
500  tags:
501    - name:pj01
502  variables:
503    TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx
504
505linux-pkgs-dbg-ftn-interfaces:
506  extends:
507    - .stage-3
508    - .linux_test
509  tags:
510    - name:pj02
511  variables:
512    TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces
513
514linux-analyzer:
515  extends:
516    - .stage-3
517    - .linux_test
518  tags:
519    - mcs-nfs
520  variables:
521    TEST_ARCH: arch-ci-linux-analyzer
522
523linux-gcc-ifc-cmplx:
524  extends:
525    - .stage-3
526    - .linux_test
527  tags:
528    - mcs-nfs
529  variables:
530    TEST_ARCH: arch-ci-linux-gcc-ifc-cmplx
531
532linux-gcov:
533  extends:
534    - .stage-3
535    - .linux_test
536  tags:
537    - mcs-nfs
538  variables:
539    TEST_ARCH: arch-ci-linux-gcov
540
541linux-IPL64:
542  extends:
543    - .stage-3
544    - .linux_test
545  tags:
546    - mcs-nfs,name:cg
547  variables:
548    OPENBLAS_NUM_THREADS: 1
549    TEST_ARCH: arch-ci-linux-IPL64
550
551linux-matlab-ilp64-gcov:
552  extends:
553    - .stage-3
554    - .linux_test
555  tags:
556    - mcs-nfs
557  variables:
558    TEST_ARCH: arch-ci-linux-matlab-ilp64-gcov
559
560linux-opt-cxx-quad:
561  extends:
562    - .stage-3
563    - .linux_test
564  tags:
565    - mcs-nfs
566  variables:
567    TEST_ARCH: arch-ci-linux-opt-cxx-quad
568
569linux-pgi:
570  extends:
571    - .stage-3
572    - .linux_test
573  tags:
574    - mcs-nfs,name:petsc
575  variables:
576    TEST_ARCH: arch-ci-linux-pgi
577
578linux-pkgs-64idx:
579  extends:
580    - .stage-3
581    - .linux_test
582  tags:
583    - mcs-nfs
584  variables:
585    TEST_ARCH: arch-ci-linux-pkgs-64idx
586
587linux-pkgs-gcov:
588  extends:
589    - .stage-3
590    - .linux_test
591  tags:
592    - mcs-nfs
593  variables:
594    TEST_ARCH: arch-ci-linux-pkgs-gcov
595
596linux-pkgs-opt:
597  extends:
598    - .stage-3
599    - .linux_test
600  tags:
601    - mcs-nfs
602  variables:
603    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
604    TEST_ARCH: arch-ci-linux-pkgs-opt
605
606linux-pkgs-valgrind:
607  extends:
608    - .stage-3
609    - .linux_test
610  tags:
611    - mcs-nfs,server
612  variables:
613    TEST_ARCH: arch-ci-linux-pkgs-valgrind
614    TIMEOUT: 7200
615
616linux-xsdk-dbg:
617  extends:
618    - .stage-3
619    - .linux_test
620  tags:
621    - mcs-nfs
622  variables:
623    TEST_ARCH: arch-ci-linux-xsdk-dbg
624
625linux-pardiso:
626  extends:
627    - .stage-3
628    - .linux_test
629  tags:
630    - mcs-nfs
631  variables:
632    TEST_ARCH: arch-ci-linux-pardiso
633
634#
635# The following tests are experimental; more tests by users at other sites may be added below this.  Experimental test
636# that fail produce a warning, but do not block execution of a pipeline.
637#
638
639.test-experimental:
640  extends: .test
641  allow_failure: true
642
643