xref: /petsc/.gitlab-ci.yml (revision 03049c21b7788bf1d362e6d868659cfd5a8ea0e4)
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    - echo CONFIG_OPTS=$(CONFIG_OPTS)
55  script:
56    - ${PYTHON} ./configure --with-debugging=0 COPTFLAGS='-O -march=native' CXXOPTFLAGS='-O -march=native' FOPTFLAGS='-O -march=native' ${CONFIG_OPTS}
57    - make CFLAGS=-Werror
58    - make allgtests-tap search="${TEST_SEARCH}" TIMEOUT=${TIMEOUT}
59  after_script:
60    - CCACHE_DIR=$(pwd)/.ccache ccache --show-stats
61  artifacts:
62    reports:
63      junit: arch-*/tests/testresults.xml
64  cache:
65    paths:
66      - .ccache/
67    key: "${CI_JOB_NAME}"
68
69#
70# The following tests run on the cloud as part of stage-1.
71#
72
73mpich-cxx-py3:
74  extends: .stage-1
75  variables:
76    PYTHON: python3
77    CONFIG_OPTS: --with-mpi-dir=/usr/local --with-clanguage=cxx --with-fc=0
78    TEST_SEARCH: snes_tutorials-ex48%
79
80uni-complex-float-int64:
81  extends: .stage-1
82  variables:
83    PYTHON: python3
84    CONFIG_OPTS: --with-mpi=0 --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: --with-mpi-dir=/usr/local --with-single-library=0 --with-shared-libraries=0 CFLAGS=-std=c89
93    TEST_SEARCH: snes_tutorials-ex19%
94
95checksource:
96  extends: .test
97  image: jedbrown/mpich-ccache
98  stage: stage-1
99  script:
100    - python3 ./configure --with-mpi=0 --with-fc=0 --with-cxx=0
101    - make checkbadSource SHELL=bash
102
103#
104# This provides the basic order of operations and options template for stage-2,3 tests.
105# Not all stage-2,3 need to follow this template, but most will.
106#
107.stage-23:
108  extends: .test
109  script:
110    - printf "PATH:$PATH\n"
111    - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n"
112    - printf "./config/examples/${TEST_ARCH}.py\n"
113    - cat ./config/examples/${TEST_ARCH}.py
114    - ./config/examples/${TEST_ARCH}.py
115    - make
116    - make check
117    - make updatedatafiles
118    - make cleantest allgtests-tap TIMEOUT=${TIMEOUT}
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    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
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    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
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    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
171    - ccache --show-stats
172
173.opensolaris_test:
174  before_script:
175    - hostname
176    - uname -a
177    - echo $(nproc)
178  after_script:
179    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
180
181.mswin_test:
182  before_script:
183    - hostname
184    - uname -a
185    - echo $(nproc)
186  after_script:
187    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
188
189#
190# The following tests run as part of stage-2.
191#
192# The tags variable used in the tests below connects the particular test with the runners
193# listed on the left hand side of https://gitlab.com/petsc/petsc/-/settings/ci_cd.
194# For example the test linux-gcc-complex-opt  any runner that has the tag 'name:pj02'
195# (in a blue box beneath it)
196#
197
198linux-gcc-complex-opt:
199  extends:
200    - .stage-2
201    - .linux_test
202  tags:
203    - linux-dell
204  variables:
205    TEST_ARCH: arch-ci-linux-gcc-complex-opt
206
207linux-gcc-pkgs-opt:
208  extends:
209    - .stage-2
210    - .linux_test
211  tags:
212    - linux-dell
213  variables:
214    TEST_ARCH: arch-ci-linux-gcc-pkgs-opt
215
216linux-gcc-quad-64idx-dbg:
217  extends:
218    - .stage-2
219    - .linux_test
220  tags:
221    - linux-dell
222  variables:
223    TEST_ARCH: arch-ci-linux-gcc-quad-64idx-dbg
224
225linux-cuda-double:
226  extends:
227    - .stage-2
228    - .linux_test
229  tags:
230    - name:frog
231  variables:
232    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
233    TEST_ARCH: arch-ci-linux-cuda-double
234
235freebsd-c-single-opt:
236  extends:
237    - .stage-2
238    - .freebsd_test
239  tags:
240    - os:fbsd
241  variables:
242    TEST_ARCH: arch-ci-freebsd-c-single-opt
243
244freebsd-cxx-cmplx-64idx-dbg:
245  extends:
246    - .stage-2
247    - .freebsd_test
248  tags:
249    - name:petsc-fbsd
250  variables:
251    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg
252
253opensolaris-misc:
254  extends:
255    - .stage-3
256    - .opensolaris_test
257  tags:
258    - name:n-gage
259  variables:
260    TEST_ARCH: arch-ci-opensolaris-misc
261
262osx-cxx-pkgs-opt:
263  extends:
264    - .stage-2
265    - .osx_test
266  tags:
267    - os:osx
268  variables:
269    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
270    TEST_ARCH: arch-ci-osx-cxx-pkgs-opt
271
272mswin-uni:
273  extends:
274    - .stage-2
275    - .mswin_test
276  tags:
277    - name:ps5-2
278  variables:
279    TEST_ARCH: arch-ci-mswin-uni
280
281#
282# The following tests run as part of stage-3.
283#
284
285mswin-intel-cxx-cmplx:
286  extends:
287    - .stage-3
288    - .mswin_test
289  tags:
290    - name:ps5
291  variables:
292    TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx
293
294mswin-intel:
295  extends:
296    - .stage-3
297    - .mswin_test
298  tags:
299    - name:ps5
300  variables:
301    TEST_ARCH: arch-ci-mswin-intel
302
303arch-ci-mswin-opt-impi:
304  extends:
305    - .stage-3
306    - .mswin_test
307  tags:
308    - name:ps4
309  variables:
310    TEST_ARCH: arch-ci-mswin-opt-impi
311  allow_failure: true
312
313
314opensolaris-cmplx-pkgs-dbg:
315  extends:
316    - .stage-3
317    - .opensolaris_test
318  tags:
319    - name:n-gage
320  variables:
321    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
322
323opensolaris-pkgs-opt:
324  extends:
325    - .stage-3
326    - .opensolaris_test
327  tags:
328    - name:n-gage
329  variables:
330    TEST_ARCH: arch-ci-opensolaris-pkgs-opt
331
332freebsd-pkgs-opt:
333  extends:
334    - .stage-3
335    - .freebsd_test
336  tags:
337    - os:fbsd
338  variables:
339    TEST_ARCH: arch-ci-freebsd-pkgs-opt
340
341freebsd-cxx-cmplx-pkgs-dbg:
342  extends:
343    - .stage-3
344    - .freebsd_test
345  tags:
346    - os:fbsd
347  variables:
348    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg
349
350freebsd-cxx-pkgs-opt:
351  extends:
352    - .stage-3
353    - .freebsd_test
354  tags:
355    - os:fbsd
356  variables:
357    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
358    TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt
359
360osx-cxx-cmplx-pkgs-dbg:
361  extends:
362    - .stage-3
363    - .osx_test
364  tags:
365    - os:osx
366  variables:
367    TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg
368
369osx-dbg:
370  extends:
371    - .stage-3
372    - .osx_test
373  tags:
374    - os:osx
375  variables:
376    TEST_ARCH: arch-ci-osx-dbg
377
378osx-xsdk-opt:
379  extends:
380    - .stage-3
381    - .osx_test
382  tags:
383    - os:osx
384  variables:
385    TEST_ARCH: arch-ci-osx-xsdk-opt
386
387linux-cmplx-gcov:
388  extends:
389    - .stage-3
390    - .linux_test
391  tags:
392    - mcs-nfs
393  variables:
394    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -vecscatter_mpi1 false -options_left false
395    TEST_ARCH: arch-ci-linux-cmplx-gcov
396
397linux-cmplx-single:
398  extends:
399    - .stage-3
400    - .linux_test
401  tags:
402    - name:si
403  variables:
404    TEST_ARCH: arch-ci-linux-cmplx-single
405
406linux-without-fc:
407  extends:
408    - .stage-3
409    - .linux_test
410  tags:
411    - name:si
412  variables:
413    TEST_ARCH: arch-ci-linux-without-fc
414
415linux-clang-avx:
416  extends:
417    - .stage-3
418    - .linux_test
419  tags:
420    - name:isdp001
421  variables:
422    TEST_ARCH: arch-ci-linux-clang-avx
423
424linux-gcc-cxx-avx2:
425  extends:
426    - .stage-3
427    - .linux_test
428  tags:
429    - name:isdp001
430  variables:
431    TEST_ARCH: arch-ci-linux-gcc-cxx-avx2
432
433linux-knl:
434  extends:
435    - .stage-3
436    - .linux_test
437  tags:
438    - name:isdp001
439  variables:
440    TEST_ARCH: arch-ci-linux-knl
441
442linux-c-exodus-dbg:
443  extends:
444    - .stage-3
445    - .linux_test
446  tags:
447    - name:frog
448  variables:
449    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
450    TEST_ARCH: arch-ci-linux-c-exodus-dbg
451
452linux-cuda-single:
453  extends:
454    - .stage-3
455    - .linux_test
456  tags:
457    - name:frog
458  variables:
459    OPENBLAS_NUM_THREADS: 1
460    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
461    TEST_ARCH: arch-ci-linux-cuda-single
462
463linux-viennacl:
464  extends:
465    - .stage-3
466    - .linux_test
467  tags:
468    - name:frog
469  variables:
470    TEST_ARCH: arch-ci-linux-viennacl
471
472linux-opt-misc:
473  extends:
474    - .stage-3
475    - .linux_test
476  tags:
477    - name:compute004
478  variables:
479    OPENBLAS_NUM_THREADS: 1
480    TEST_ARCH: arch-ci-linux-opt-misc
481
482linux-pkgs-cxx-mlib:
483  extends:
484    - .stage-3
485    - .linux_test
486  tags:
487    - name:pj02
488  variables:
489    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
490    TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib
491
492linux-cxx-cmplx-pkgs-64idx:
493  extends:
494    - .stage-3
495    - .linux_test
496  tags:
497    - name:pj01
498  variables:
499    TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx
500
501linux-pkgs-dbg-ftn-interfaces:
502  extends:
503    - .stage-3
504    - .linux_test
505  tags:
506    - name:pj02
507  variables:
508    TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces
509
510linux-analyzer:
511  extends:
512    - .stage-3
513    - .linux_test
514  tags:
515    - mcs-nfs
516  variables:
517    TEST_ARCH: arch-ci-linux-analyzer
518
519linux-gcc-ifc-cmplx:
520  extends:
521    - .stage-3
522    - .linux_test
523  tags:
524    - mcs-nfs
525  variables:
526    TEST_ARCH: arch-ci-linux-gcc-ifc-cmplx
527
528linux-gcov:
529  extends:
530    - .stage-3
531    - .linux_test
532  tags:
533    - mcs-nfs
534  variables:
535    TEST_ARCH: arch-ci-linux-gcov
536
537linux-ILP64:
538  extends:
539    - .stage-3
540    - .linux_test
541  tags:
542    - name:compute004
543  variables:
544    OPENBLAS_NUM_THREADS: 1
545    TEST_ARCH: arch-ci-linux-ILP64
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    - name:compute004
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    TIMEOUT: 7200
611
612linux-xsdk-dbg:
613  extends:
614    - .stage-3
615    - .linux_test
616  tags:
617    - mcs-nfs
618  variables:
619    TEST_ARCH: arch-ci-linux-xsdk-dbg
620
621linux-pardiso:
622  extends:
623    - .stage-3
624    - .linux_test
625  tags:
626    - mcs-nfs
627  variables:
628    TEST_ARCH: arch-ci-linux-pardiso
629
630linux-nagfor:
631  extends:
632    - .stage-3
633    - .linux_test
634  tags:
635    - mcs-nfs
636  variables:
637    TEST_ARCH: arch-ci-linux-nagfor
638
639#
640# The following tests are experimental; more tests by users at other sites may be added below this.  Experimental test
641# that fail produce a warning, but do not block execution of a pipeline.
642#
643
644.test-experimental:
645  extends: .test
646  allow_failure: true
647
648