xref: /petsc/.gitlab-ci.yml (revision 5e3618604c1c5afb5b01a824de3cb89fd9424a1e)
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    - make check_output SHELL=bash
103
104#
105# This provides the basic order of operations and options template for stage-2,3 tests.
106# Not all stage-2,3 need to follow this template, but most will.
107#
108.stage-23:
109  extends: .test
110  script:
111    - printf "PATH:$PATH\n"
112    - printf "PETSC_OPTIONS:$PETSC_OPTIONS\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 updatedatafiles
119    - make cleantest allgtests-tap TIMEOUT=${TIMEOUT}
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-3
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
266mswin-uni:
267  extends:
268    - .stage-2
269    - .mswin_test
270  tags:
271    - name:ps5-2
272  variables:
273    TEST_ARCH: arch-ci-mswin-uni
274
275#
276# The following tests run as part of stage-3.
277#
278
279mswin-intel-cxx-cmplx:
280  extends:
281    - .stage-3
282    - .mswin_test
283  tags:
284    - name:ps5
285  variables:
286    TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx
287
288mswin-intel:
289  extends:
290    - .stage-3
291    - .mswin_test
292  tags:
293    - name:ps5
294  variables:
295    TEST_ARCH: arch-ci-mswin-intel
296
297arch-ci-mswin-opt-impi:
298  extends:
299    - .stage-3
300    - .mswin_test
301  tags:
302    - name:ps4
303  variables:
304    TEST_ARCH: arch-ci-mswin-opt-impi
305  allow_failure: true
306
307
308opensolaris-cmplx-pkgs-dbg:
309  extends:
310    - .stage-3
311    - .opensolaris_test
312  tags:
313    - name:n-gage
314  variables:
315    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
316
317opensolaris-pkgs-opt:
318  extends:
319    - .stage-3
320    - .opensolaris_test
321  tags:
322    - name:n-gage
323  variables:
324    TEST_ARCH: arch-ci-opensolaris-pkgs-opt
325
326freebsd-pkgs-opt:
327  extends:
328    - .stage-3
329    - .freebsd_test
330  tags:
331    - os:fbsd
332  variables:
333    TEST_ARCH: arch-ci-freebsd-pkgs-opt
334
335freebsd-cxx-cmplx-pkgs-dbg:
336  extends:
337    - .stage-3
338    - .freebsd_test
339  tags:
340    - os:fbsd
341  variables:
342    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg
343
344freebsd-cxx-pkgs-opt:
345  extends:
346    - .stage-3
347    - .freebsd_test
348  tags:
349    - os:fbsd
350  variables:
351    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
352    TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt
353
354osx-cxx-cmplx-pkgs-dbg:
355  extends:
356    - .stage-3
357    - .osx_test
358  tags:
359    - os:osx
360  variables:
361    TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg
362
363osx-dbg:
364  extends:
365    - .stage-3
366    - .osx_test
367  tags:
368    - os:osx
369  variables:
370    TEST_ARCH: arch-ci-osx-dbg
371
372osx-xsdk-opt:
373  extends:
374    - .stage-3
375    - .osx_test
376  tags:
377    - os:osx
378  variables:
379    TEST_ARCH: arch-ci-osx-xsdk-opt
380
381linux-cmplx-gcov:
382  extends:
383    - .stage-3
384    - .linux_test
385  tags:
386    - mcs-nfs
387  variables:
388    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -vecscatter_mpi1 false -options_left false
389    TEST_ARCH: arch-ci-linux-cmplx-gcov
390
391linux-cmplx-single:
392  extends:
393    - .stage-3
394    - .linux_test
395  tags:
396    - name:si
397  variables:
398    TEST_ARCH: arch-ci-linux-cmplx-single
399
400linux-without-fc:
401  extends:
402    - .stage-3
403    - .linux_test
404  tags:
405    - name:si
406  variables:
407    TEST_ARCH: arch-ci-linux-without-fc
408
409linux-clang-avx:
410  extends:
411    - .stage-3
412    - .linux_test
413  tags:
414    - name:isdp001
415  variables:
416    TEST_ARCH: arch-ci-linux-clang-avx
417
418linux-gcc-cxx-avx2:
419  extends:
420    - .stage-3
421    - .linux_test
422  tags:
423    - name:isdp001
424  variables:
425    TEST_ARCH: arch-ci-linux-gcc-cxx-avx2
426
427linux-knl:
428  extends:
429    - .stage-3
430    - .linux_test
431  tags:
432    - name:isdp001
433  variables:
434    TEST_ARCH: arch-ci-linux-knl
435
436linux-c-exodus-dbg:
437  extends:
438    - .stage-3
439    - .linux_test
440  tags:
441    - name:frog
442  variables:
443    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
444    TEST_ARCH: arch-ci-linux-c-exodus-dbg
445
446linux-cuda-single:
447  extends:
448    - .stage-3
449    - .linux_test
450  tags:
451    - name:frog
452  variables:
453    OPENBLAS_NUM_THREADS: 1
454    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
455    TEST_ARCH: arch-ci-linux-cuda-single
456
457linux-viennacl:
458  extends:
459    - .stage-3
460    - .linux_test
461  tags:
462    - name:frog
463  variables:
464    TEST_ARCH: arch-ci-linux-viennacl
465
466linux-opt-misc:
467  extends:
468    - .stage-3
469    - .linux_test
470  tags:
471    - name:compute004
472  variables:
473    OPENBLAS_NUM_THREADS: 1
474    TEST_ARCH: arch-ci-linux-opt-misc
475
476linux-pkgs-cxx-mlib:
477  extends:
478    - .stage-3
479    - .linux_test
480  tags:
481    - name:pj02
482  variables:
483    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
484    TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib
485
486linux-cxx-cmplx-pkgs-64idx:
487  extends:
488    - .stage-3
489    - .linux_test
490  tags:
491    - name:pj01
492  variables:
493    TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx
494
495linux-pkgs-dbg-ftn-interfaces:
496  extends:
497    - .stage-3
498    - .linux_test
499  tags:
500    - name:pj02
501  variables:
502    TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces
503
504linux-analyzer:
505  extends:
506    - .stage-3
507    - .linux_test
508  tags:
509    - mcs-nfs
510  variables:
511    TEST_ARCH: arch-ci-linux-analyzer
512
513linux-gcc-ifc-cmplx:
514  extends:
515    - .stage-3
516    - .linux_test
517  tags:
518    - mcs-nfs
519  variables:
520    TEST_ARCH: arch-ci-linux-gcc-ifc-cmplx
521
522linux-gcov:
523  extends:
524    - .stage-3
525    - .linux_test
526  tags:
527    - mcs-nfs
528  variables:
529    TEST_ARCH: arch-ci-linux-gcov
530
531linux-ILP64:
532  extends:
533    - .stage-3
534    - .linux_test
535  tags:
536    - name:compute004
537  variables:
538    OPENBLAS_NUM_THREADS: 1
539    TEST_ARCH: arch-ci-linux-ILP64
540
541linux-matlab-ilp64-gcov:
542  extends:
543    - .stage-3
544    - .linux_test
545  tags:
546    - mcs-nfs
547  variables:
548    TEST_ARCH: arch-ci-linux-matlab-ilp64-gcov
549
550linux-opt-cxx-quad:
551  extends:
552    - .stage-3
553    - .linux_test
554  tags:
555    - mcs-nfs
556  variables:
557    TEST_ARCH: arch-ci-linux-opt-cxx-quad
558
559linux-pgi:
560  extends:
561    - .stage-3
562    - .linux_test
563  tags:
564    - mcs-nfs,name:petsc
565  variables:
566    TEST_ARCH: arch-ci-linux-pgi
567
568linux-pkgs-64idx:
569  extends:
570    - .stage-3
571    - .linux_test
572  tags:
573    - mcs-nfs
574  variables:
575    TEST_ARCH: arch-ci-linux-pkgs-64idx
576
577linux-pkgs-gcov:
578  extends:
579    - .stage-3
580    - .linux_test
581  tags:
582    - mcs-nfs
583  variables:
584    TEST_ARCH: arch-ci-linux-pkgs-gcov
585
586linux-pkgs-opt:
587  extends:
588    - .stage-3
589    - .linux_test
590  tags:
591    - name:compute004
592  variables:
593    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
594    TEST_ARCH: arch-ci-linux-pkgs-opt
595
596linux-pkgs-valgrind:
597  extends:
598    - .stage-3
599    - .linux_test
600  tags:
601    - mcs-nfs,server
602  variables:
603    TEST_ARCH: arch-ci-linux-pkgs-valgrind
604    TIMEOUT: 7200
605
606linux-xsdk-dbg:
607  extends:
608    - .stage-3
609    - .linux_test
610  tags:
611    - mcs-nfs
612  variables:
613    TEST_ARCH: arch-ci-linux-xsdk-dbg
614
615linux-pardiso:
616  extends:
617    - .stage-3
618    - .linux_test
619  tags:
620    - mcs-nfs
621  variables:
622    TEST_ARCH: arch-ci-linux-pardiso
623
624#
625# The following tests are experimental; more tests by users at other sites may be added below this.  Experimental test
626# that fail produce a warning, but do not block execution of a pipeline.
627#
628
629.test-experimental:
630  extends: .test
631  allow_failure: true
632
633