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