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