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