xref: /petsc/.gitlab-ci.yml (revision 6e85cc039ccb92eb657e06ccb8e802e1a84f92c2)
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:$PATH\n"
113    - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n"
114    - printf "./config/examples/${TEST_ARCH}.py\n"
115    - cat ./config/examples/${TEST_ARCH}.py
116    - ./config/examples/${TEST_ARCH}.py
117    - make
118    - make check
119    - make cleantest allgtests-tap TIMEOUT=300
120  artifacts:
121    reports:
122      junit: ${TEST_ARCH}/tests/testresults.xml
123
124.stage-2:
125  extends: .stage-23
126  stage: stage-2
127  only:
128    variables:
129      - $STAGE != "1"
130      - $STAGE != "3"
131
132.stage-3:
133  extends: .stage-23
134  stage: stage-3
135  only:
136    variables:
137      - $STAGE != "1"
138      - $STAGE != "2"
139
140#
141# The following provide templates for various OSes for pre/post info
142#
143
144.linux_test:
145  before_script:
146    - hostname
147    - grep PRETTY_NAME /etc/os-release
148    - echo $(nproc)
149    - ccache --zero-stats
150  after_script:
151    - ccache --show-stats
152
153.freebsd_test:
154  before_script:
155    - hostname
156    - freebsd-version
157    - echo $(sysctl -n hw.ncpu)
158    - ccache --zero-stats
159  after_script:
160    - ccache --show-stats
161
162.osx_test:
163  before_script:
164    - hostname
165    - sw_vers -productVersion
166    - echo $(sysctl -n hw.ncpu)
167    - ccache --zero-stats
168  after_script:
169    - ccache --show-stats
170
171.opensolaris_test:
172  before_script:
173    - hostname
174    - uname -a
175    - echo $(nproc)
176
177.mswin_test:
178  before_script:
179    - hostname
180    - uname -a
181    - echo $(nproc)
182
183#
184# The following tests run as part of stage-2.
185#
186# The tags variable used in the tests below connects the particular test with the runners
187# listed on the left hand side of https://gitlab.com/petsc/petsc/-/settings/ci_cd.
188# For example the test linux-gcc-complex-opt  any runner that has the tag 'name:pj02'
189# (in a blue box beneath it)
190#
191
192linux-gcc-complex-opt:
193  extends:
194    - .stage-2
195    - .linux_test
196  tags:
197    - linux-dell
198  variables:
199    TEST_ARCH: arch-ci-linux-gcc-complex-opt
200
201linux-gcc-pkgs-opt:
202  extends:
203    - .stage-2
204    - .linux_test
205  tags:
206    - linux-dell
207  variables:
208    TEST_ARCH: arch-ci-linux-gcc-pkgs-opt
209
210linux-gcc-quad-64idx-dbg:
211  extends:
212    - .stage-2
213    - .linux_test
214  tags:
215    - linux-dell
216  variables:
217    TEST_ARCH: arch-ci-linux-gcc-quad-64idx-dbg
218
219linux-cuda-double:
220  extends:
221    - .stage-2
222    - .linux_test
223  tags:
224    - name:frog
225  variables:
226    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
227    TEST_ARCH: arch-ci-linux-cuda-double
228
229freebsd-c-single-opt:
230  extends:
231    - .stage-2
232    - .freebsd_test
233  tags:
234    - os:fbsd
235  variables:
236    TEST_ARCH: arch-ci-freebsd-c-single-opt
237
238freebsd-cxx-cmplx-64idx-dbg:
239  extends:
240    - .stage-2
241    - .freebsd_test
242  tags:
243    - name:petsc-fbsd
244  variables:
245    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg
246
247opensolaris-misc:
248  extends:
249    - .stage-2
250    - .opensolaris_test
251  tags:
252    - name:n-gage
253  variables:
254    TEST_ARCH: arch-ci-opensolaris-misc
255
256osx-cxx-pkgs-opt:
257  extends:
258    - .stage-2
259    - .osx_test
260  tags:
261    - os:osx
262  variables:
263    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
264    TEST_ARCH: arch-ci-osx-cxx-pkgs-opt
265
266osx-barry:
267  extends:
268    - .stage-2
269    - .osx_test
270  tags:
271    - os:osx
272  variables:
273    TEST_ARCH: arch-ci-osx-prefix
274
275mswin-uni:
276  extends:
277    - .stage-2
278    - .mswin_test
279  tags:
280    - name:ps5
281  variables:
282    TEST_ARCH: arch-ci-mswin-uni
283
284#
285# The following tests run as part of stage-3.
286#
287
288mswin-intel-cxx-cmplx:
289  extends:
290    - .stage-3
291    - .mswin_test
292  tags:
293    - name:ps5
294  variables:
295    TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx
296
297mswin-intel:
298  extends:
299    - .stage-3
300    - .mswin_test
301  tags:
302    - name:ps5
303  variables:
304    TEST_ARCH: arch-ci-mswin-intel
305
306arch-ci-mswin-opt-impi:
307  extends:
308    - .stage-3
309    - .mswin_test
310  tags:
311    - name:ps4
312  variables:
313    TEST_ARCH: arch-ci-mswin-opt-impi
314  allow_failure: true
315
316
317opensolaris-cmplx-pkgs-dbg:
318  extends:
319    - .stage-3
320    - .opensolaris_test
321  tags:
322    - name:n-gage
323  variables:
324    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
325
326opensolaris-pkgs-opt:
327  extends:
328    - .stage-3
329    - .opensolaris_test
330  tags:
331    - name:n-gage
332  variables:
333    TEST_ARCH: arch-ci-opensolaris-pkgs-opt
334
335freebsd-pkgs-opt:
336  extends:
337    - .stage-3
338    - .freebsd_test
339  tags:
340    - os:fbsd
341  variables:
342    TEST_ARCH: arch-ci-freebsd-pkgs-opt
343
344freebsd-cxx-cmplx-pkgs-dbg:
345  extends:
346    - .stage-3
347    - .freebsd_test
348  tags:
349    - os:fbsd
350  variables:
351    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg
352
353freebsd-cxx-pkgs-opt:
354  extends:
355    - .stage-3
356    - .freebsd_test
357  tags:
358    - os:fbsd
359  variables:
360    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
361    TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt
362
363osx-cxx-cmplx-pkgs-dbg:
364  extends:
365    - .stage-3
366    - .osx_test
367  tags:
368    - os:osx
369  variables:
370    TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg
371
372osx-dbg:
373  extends:
374    - .stage-3
375    - .osx_test
376  tags:
377    - os:osx
378  variables:
379    TEST_ARCH: arch-ci-osx-dbg
380
381osx-xsdk-opt:
382  extends:
383    - .stage-3
384    - .osx_test
385  tags:
386    - os:osx
387  variables:
388    TEST_ARCH: arch-ci-osx-xsdk-opt
389
390linux-cmplx-gcov:
391  extends:
392    - .stage-3
393    - .linux_test
394  tags:
395    - mcs-nfs
396  variables:
397    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -vecscatter_mpi1 false -options_left false
398    TEST_ARCH: arch-ci-linux-cmplx-gcov
399
400linux-cmplx-single:
401  extends:
402    - .stage-3
403    - .linux_test
404  tags:
405    - name:si
406  variables:
407    TEST_ARCH: arch-ci-linux-cmplx-single
408
409linux-without-fc:
410  extends:
411    - .stage-3
412    - .linux_test
413  tags:
414    - name:si
415  variables:
416    TEST_ARCH: arch-ci-linux-without-fc
417
418linux-clang-avx:
419  extends:
420    - .stage-3
421    - .linux_test
422  tags:
423    - name:isdp001
424  variables:
425    TEST_ARCH: arch-ci-linux-clang-avx
426
427linux-gcc-cxx-avx2:
428  extends:
429    - .stage-3
430    - .linux_test
431  tags:
432    - name:isdp001
433  variables:
434    TEST_ARCH: arch-ci-linux-gcc-cxx-avx2
435
436linux-knl:
437  extends:
438    - .stage-3
439    - .linux_test
440  tags:
441    - name:isdp001
442  variables:
443    TEST_ARCH: arch-ci-linux-knl
444
445linux-c-exodus-dbg:
446  extends:
447    - .stage-3
448    - .linux_test
449  tags:
450    - name:frog
451  variables:
452    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
453    TEST_ARCH: arch-ci-linux-c-exodus-dbg
454
455linux-cuda-single:
456  extends:
457    - .stage-3
458    - .linux_test
459  tags:
460    - name:frog
461  variables:
462    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
463    TEST_ARCH: arch-ci-linux-cuda-single
464
465linux-viennacl:
466  extends:
467    - .stage-3
468    - .linux_test
469  tags:
470    - name:frog
471  variables:
472    TEST_ARCH: arch-ci-linux-viennacl
473
474linux-opt-misc:
475  extends:
476    - .stage-3
477    - .linux_test
478  tags:
479    - mcs-nfs,name:cg
480  variables:
481    TEST_ARCH: arch-ci-linux-opt-misc
482
483linux-pkgs-cxx-mlib:
484  extends:
485    - .stage-3
486    - .linux_test
487  tags:
488    - name:pj02
489  variables:
490    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
491    TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib
492
493linux-cxx-cmplx-pkgs-64idx:
494  extends:
495    - .stage-3
496    - .linux_test
497  tags:
498    - name:pj01
499  variables:
500    TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx
501
502linux-pkgs-dbg-ftn-interfaces:
503  extends:
504    - .stage-3
505    - .linux_test
506  tags:
507    - name:pj02
508  variables:
509    TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces
510
511linux-analyzer:
512  extends:
513    - .stage-3
514    - .linux_test
515  tags:
516    - mcs-nfs
517  variables:
518    TEST_ARCH: arch-ci-linux-analyzer
519
520linux-gcc-ifc-cmplx:
521  extends:
522    - .stage-3
523    - .linux_test
524  tags:
525    - mcs-nfs
526  variables:
527    TEST_ARCH: arch-ci-linux-gcc-ifc-cmplx
528
529linux-gcov:
530  extends:
531    - .stage-3
532    - .linux_test
533  tags:
534    - mcs-nfs
535  variables:
536    TEST_ARCH: arch-ci-linux-gcov
537
538linux-IPL64:
539  extends:
540    - .stage-3
541    - .linux_test
542  tags:
543    - mcs-nfs,name:cg
544  variables:
545    TEST_ARCH: arch-ci-linux-IPL64
546
547linux-matlab-ilp64-gcov:
548  extends:
549    - .stage-3
550    - .linux_test
551  tags:
552    - mcs-nfs
553  variables:
554    TEST_ARCH: arch-ci-linux-matlab-ilp64-gcov
555
556linux-opt-cxx-quad:
557  extends:
558    - .stage-3
559    - .linux_test
560  tags:
561    - mcs-nfs
562  variables:
563    TEST_ARCH: arch-ci-linux-opt-cxx-quad
564
565linux-pgi:
566  extends:
567    - .stage-3
568    - .linux_test
569  tags:
570    - mcs-nfs,name:petsc
571  variables:
572    TEST_ARCH: arch-ci-linux-pgi
573
574linux-pkgs-64idx:
575  extends:
576    - .stage-3
577    - .linux_test
578  tags:
579    - mcs-nfs
580  variables:
581    TEST_ARCH: arch-ci-linux-pkgs-64idx
582
583linux-pkgs-gcov:
584  extends:
585    - .stage-3
586    - .linux_test
587  tags:
588    - mcs-nfs
589  variables:
590    TEST_ARCH: arch-ci-linux-pkgs-gcov
591
592linux-pkgs-opt:
593  extends:
594    - .stage-3
595    - .linux_test
596  tags:
597    - mcs-nfs
598  variables:
599    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
600    TEST_ARCH: arch-ci-linux-pkgs-opt
601
602linux-pkgs-valgrind:
603  extends:
604    - .stage-3
605    - .linux_test
606  tags:
607    - mcs-nfs,server
608  variables:
609    TEST_ARCH: arch-ci-linux-pkgs-valgrind
610
611linux-xsdk-dbg:
612  extends:
613    - .stage-3
614    - .linux_test
615  tags:
616    - mcs-nfs
617  variables:
618    TEST_ARCH: arch-ci-linux-xsdk-dbg
619
620linux-pardiso:
621  extends:
622    - .stage-3
623    - .linux_test
624  tags:
625    - mcs-nfs
626  variables:
627    TEST_ARCH: arch-ci-linux-pardiso
628
629#
630# The following tests are experimental; more tests by users at other sites may be added below this.  Experimental test
631# that fail produce a warning, but do not block execution of a pipeline.
632#
633
634.test-experimental:
635  extends: .test
636  allow_failure: true
637
638