xref: /petsc/.gitlab-ci.yml (revision f26daa2dd43308ededd540b13f6e6b6347241d27)
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\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 cleantest allgtests-tap TIMEOUT=300
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    - name:pj02
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    - name:pj02
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    - name:pj02
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: <
226      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
227      -cuda_initialize 0
228    TEST_ARCH: arch-ci-linux-cuda-double
229
230freebsd-c-single-opt:
231  extends:
232    - .stage-2
233    - .freebsd_test
234  tags:
235    - os:fbsd
236  variables:
237    TEST_ARCH: arch-ci-freebsd-c-single-opt
238
239freebsd-cxx-cmplx-64idx-dbg:
240  extends:
241    - .stage-2
242    - .freebsd_test
243  tags:
244    - name:petsc-fbsd
245  variables:
246    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg
247
248opensolaris-misc:
249  extends:
250    - .stage-2
251    - .opensolaris_test
252  tags:
253    - name:n-gage
254  variables:
255    TEST_ARCH: arch-ci-opensolaris-misc
256
257osx-cxx-pkgs-opt:
258  extends:
259    - .stage-2
260    - .osx_test
261  tags:
262    - name:jpro
263  variables:
264    PETSC_OPTIONS: <
265      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
266      -saws_port_auto_select -saws_port_auto_select_silent -vecscatter_mpi1 false -options_left false
267    TEST_ARCH: arch-ci-osx-cxx-pkgs-opt
268
269osx-barry:
270  extends:
271    - .stage-2
272    - .osx_test
273  tags:
274    - os:osx
275  variables:
276    TEST_ARCH: arch-ci-osx-prefix
277
278mswin-uni:
279  extends:
280    - .stage-2
281    - .mswin_test
282  tags:
283    - name:ps4
284  variables:
285    TEST_ARCH: arch-ci-mswin-uni
286
287#
288# The following tests run as part of stage-3.
289#
290
291mswin-intel-cxx-cmplx:
292  extends:
293    - .stage-3
294    - .mswin_test
295  tags:
296    - name:ps4
297  variables:
298    TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx
299
300mswin-intel:
301  extends:
302    - .stage-3
303    - .mswin_test
304  tags:
305    - name:ps4
306  variables:
307    TEST_ARCH: arch-ci-mswin-intel
308
309arch-ci-mswin-opt-impi:
310  extends:
311    - .stage-3
312    - .mswin_test
313  tags:
314    - name:ps4
315  variables:
316    TEST_ARCH: arch-ci-mswin-opt-impi
317
318
319opensolaris-cmplx-pkgs-dbg:
320  extends:
321    - .stage-3
322    - .opensolaris_test
323  tags:
324    - name:n-gage
325  variables:
326    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
327
328opensolaris-pkgs-opt:
329  extends:
330    - .stage-3
331    - .opensolaris_test
332  tags:
333    - name:n-gage
334  variables:
335    TEST_ARCH: arch-ci-opensolaris-pkgs-opt
336
337freebsd-pkgs-opt:
338  extends:
339    - .stage-3
340    - .freebsd_test
341  tags:
342    - os:fbsd
343  variables:
344    TEST_ARCH: arch-ci-freebsd-pkgs-opt
345
346freebsd-cxx-cmplx-pkgs-dbg:
347  extends:
348    - .stage-3
349    - .freebsd_test
350  tags:
351    - os:fbsd
352  variables:
353    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg
354
355freebsd-cxx-pkgs-opt:
356  extends:
357    - .stage-3
358    - .freebsd_test
359  tags:
360    - os:fbsd
361  variables:
362    PETSC_OPTIONS: <
363      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
364      -saws_port_auto_select -saws_port_auto_select_silent -vecscatter_mpi1 false -options_left false
365  variables:
366    TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt
367
368osx-cxx-cmplx-pkgs-dbg:
369  extends:
370    - .stage-3
371    - .osx_test
372  tags:
373    - os:osx,name:jpro
374  variables:
375    TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg
376
377osx-dbg:
378  extends:
379    - .stage-3
380    - .osx_test
381  tags:
382    - os:osx
383  variables:
384    TEST_ARCH: arch-ci-osx-dbg
385
386osx-xsdk-opt:
387  extends:
388    - .stage-3
389    - .osx_test
390  tags:
391    - os:osx
392  variables:
393    TEST_ARCH: arch-ci-osx-xsdk-opt
394
395linux-cmplx-gcov:
396  extends:
397    - .stage-3
398    - .linux_test
399  tags:
400    - name:si
401  variables:
402    PETSC_OPTIONS: <
403      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
404      -vecscatter_mpi1 false -options_left false
405    TEST_ARCH: arch-ci-linux-cmplx-gcov
406
407linux-cmplx-single:
408  extends:
409    - .stage-3
410    - .linux_test
411  tags:
412    - name:si
413  variables:
414    TEST_ARCH: arch-ci-linux-cmplx-single
415
416linux-without-fc:
417  extends:
418    - .stage-3
419    - .linux_test
420  tags:
421    - name:si
422  variables:
423    TEST_ARCH: arch-ci-linux-without-fc
424
425linux-clang-avx:
426  extends:
427    - .stage-3
428    - .linux_test
429  tags:
430    - name:isdp001
431  variables:
432    TEST_ARCH: arch-ci-linux-clang-avx
433
434linux-gcc-cxx-avx2:
435  extends:
436    - .stage-3
437    - .linux_test
438  tags:
439    - name:isdp001
440  variables:
441    TEST_ARCH: arch-ci-linux-gcc-cxx-avx2
442
443linux-knl:
444  extends:
445    - .stage-3
446    - .linux_test
447  tags:
448    - name:isdp001
449  variables:
450    TEST_ARCH: arch-ci-linux-knl
451
452linux-c-exodus-dbg:
453  extends:
454    - .stage-3
455    - .linux_test
456  tags:
457    - name:frog
458  variables:
459    PETSC_OPTIONS: <
460      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
461      -cuda_initialize 0
462    TEST_ARCH: arch-ci-linux-c-exodus-dbg
463
464linux-cuda-single:
465  extends:
466    - .stage-3
467    - .linux_test
468  tags:
469    - name:frog
470  variables:
471    PETSC_OPTIONS: <
472      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
473      -cuda_initialize 0
474    TEST_ARCH: arch-ci-linux-cuda-single
475
476linux-viennacl:
477  extends:
478    - .stage-3
479    - .linux_test
480  tags:
481    - name:frog
482  variables:
483    TEST_ARCH: arch-ci-linux-viennacl
484
485linux-opt-misc:
486  extends:
487    - .stage-3
488    - .linux_test
489  tags:
490    - name:asterix
491  variables:
492    TEST_ARCH: arch-ci-linux-opt-misc
493
494linux-pkgs-cxx-mlib:
495  extends:
496    - .stage-3
497    - .linux_test
498  tags:
499    - name:asterix
500  variables:
501    PETSC_OPTIONS: <
502      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
503      -saws_port_auto_select -saws_port_auto_select_silent
504    TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib
505
506linux-cxx-cmplx-pkgs-64idx:
507  extends:
508    - .stage-3
509    - .linux_test
510  tags:
511    - name:fedora
512  variables:
513    TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx
514
515linux-pkgs-dbg-ftn-interfaces:
516  extends:
517    - .stage-3
518    - .linux_test
519  tags:
520    - name:fedora
521  variables:
522    TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces
523
524#
525# The following tests are experimental; more tests by users at other sites may be added below this.  Experimental test
526# that fail produce a warning, but do not block execution of a pipeline.
527#
528
529.test-experimental:
530  extends: .test
531  allow_failure: true
532
533