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