xref: /petsc/.gitlab-ci.yml (revision 4dbcf49feaaa7efd011b01738aeeb0de58c93d15)
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  variables:
124    OPENBLAS_NUM_THREADS: 1
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    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
154    - ccache --show-stats
155
156.freebsd_test:
157  before_script:
158    - hostname
159    - freebsd-version
160    - echo $(sysctl -n hw.ncpu)
161    - ccache --zero-stats
162  after_script:
163    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
164    - ccache --show-stats
165
166.osx_test:
167  before_script:
168    - hostname
169    - sw_vers -productVersion
170    - echo $(sysctl -n hw.ncpu)
171    - ccache --zero-stats
172  after_script:
173    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
174    - ccache --show-stats
175
176.opensolaris_test:
177  before_script:
178    - hostname
179    - uname -a
180    - echo $(nproc)
181  after_script:
182    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
183
184.mswin_test:
185  before_script:
186    - hostname
187    - uname -a
188    - echo $(nproc)
189  after_script:
190    - cp configure.log ../configure.log-${CI_JOB_NAME}-${CI_PIPELINE_ID}-${CI_JOB_ID}
191
192#
193# The following tests run as part of stage-2.
194#
195# The tags variable used in the tests below connects the particular test with the runners
196# listed on the left hand side of https://gitlab.com/petsc/petsc/-/settings/ci_cd.
197# For example the test linux-gcc-complex-opt  any runner that has the tag 'name:pj02'
198# (in a blue box beneath it)
199#
200
201linux-gcc-complex-opt:
202  extends:
203    - .stage-2
204    - .linux_test
205  tags:
206    - linux-dell
207  variables:
208    TEST_ARCH: arch-ci-linux-gcc-complex-opt
209
210linux-gcc-pkgs-opt:
211  extends:
212    - .stage-2
213    - .linux_test
214  tags:
215    - linux-dell
216  variables:
217    TEST_ARCH: arch-ci-linux-gcc-pkgs-opt
218
219linux-gcc-quad-64idx-dbg:
220  extends:
221    - .stage-2
222    - .linux_test
223  tags:
224    - linux-dell
225  variables:
226    TEST_ARCH: arch-ci-linux-gcc-quad-64idx-dbg
227
228linux-cuda-double:
229  extends:
230    - .stage-2
231    - .linux_test
232  tags:
233    - name:frog
234  variables:
235    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
236    TEST_ARCH: arch-ci-linux-cuda-double
237
238freebsd-c-single-opt:
239  extends:
240    - .stage-2
241    - .freebsd_test
242  tags:
243    - os:fbsd
244  variables:
245    TEST_ARCH: arch-ci-freebsd-c-single-opt
246
247freebsd-cxx-cmplx-64idx-dbg:
248  extends:
249    - .stage-2
250    - .freebsd_test
251  tags:
252    - name:petsc-fbsd
253  variables:
254    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg
255
256opensolaris-misc:
257  extends:
258    - .stage-3
259    - .opensolaris_test
260  tags:
261    - name:n-gage
262  variables:
263    TEST_ARCH: arch-ci-opensolaris-misc
264
265osx-cxx-pkgs-opt:
266  extends:
267    - .stage-2
268    - .osx_test
269  tags:
270    - os:osx
271  variables:
272    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
273    TEST_ARCH: arch-ci-osx-cxx-pkgs-opt
274
275mswin-uni:
276  extends:
277    - .stage-2
278    - .mswin_test
279  tags:
280    - name:ps5-2
281  variables:
282    TEST_ARCH: arch-ci-mswin-uni
283
284#
285# The following tests run as part of stage-3.
286#
287
288mswin-intel-cxx-cmplx:
289  extends:
290    - .stage-3
291    - .mswin_test
292  tags:
293    - name:ps5
294  variables:
295    TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx
296
297mswin-intel:
298  extends:
299    - .stage-3
300    - .mswin_test
301  tags:
302    - name:ps5
303  variables:
304    TEST_ARCH: arch-ci-mswin-intel
305
306arch-ci-mswin-opt-impi:
307  extends:
308    - .stage-3
309    - .mswin_test
310  tags:
311    - name:ps4
312  variables:
313    TEST_ARCH: arch-ci-mswin-opt-impi
314  allow_failure: true
315
316
317opensolaris-cmplx-pkgs-dbg:
318  extends:
319    - .stage-3
320    - .opensolaris_test
321  tags:
322    - name:n-gage
323  variables:
324    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
325
326opensolaris-pkgs-opt:
327  extends:
328    - .stage-3
329    - .opensolaris_test
330  tags:
331    - name:n-gage
332  variables:
333    TEST_ARCH: arch-ci-opensolaris-pkgs-opt
334
335freebsd-pkgs-opt:
336  extends:
337    - .stage-3
338    - .freebsd_test
339  tags:
340    - os:fbsd
341  variables:
342    TEST_ARCH: arch-ci-freebsd-pkgs-opt
343
344freebsd-cxx-cmplx-pkgs-dbg:
345  extends:
346    - .stage-3
347    - .freebsd_test
348  tags:
349    - os:fbsd
350  variables:
351    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg
352
353freebsd-cxx-pkgs-opt:
354  extends:
355    - .stage-3
356    - .freebsd_test
357  tags:
358    - os:fbsd
359  variables:
360    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
361    TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt
362
363osx-cxx-cmplx-pkgs-dbg:
364  extends:
365    - .stage-3
366    - .osx_test
367  tags:
368    - os:osx
369  variables:
370    TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg
371
372osx-dbg:
373  extends:
374    - .stage-3
375    - .osx_test
376  tags:
377    - os:osx
378  variables:
379    TEST_ARCH: arch-ci-osx-dbg
380
381osx-xsdk-opt:
382  extends:
383    - .stage-3
384    - .osx_test
385  tags:
386    - os:osx
387  variables:
388    TEST_ARCH: arch-ci-osx-xsdk-opt
389
390linux-cmplx-gcov:
391  extends:
392    - .stage-3
393    - .linux_test
394  tags:
395    - mcs-nfs
396  variables:
397    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -vecscatter_mpi1 false -options_left false
398    TEST_ARCH: arch-ci-linux-cmplx-gcov
399
400linux-cmplx-single:
401  extends:
402    - .stage-3
403    - .linux_test
404  tags:
405    - name:si
406  variables:
407    TEST_ARCH: arch-ci-linux-cmplx-single
408
409linux-without-fc:
410  extends:
411    - .stage-3
412    - .linux_test
413  tags:
414    - name:si
415  variables:
416    TEST_ARCH: arch-ci-linux-without-fc
417
418linux-clang-avx:
419  extends:
420    - .stage-3
421    - .linux_test
422  tags:
423    - name:isdp001
424  variables:
425    TEST_ARCH: arch-ci-linux-clang-avx
426
427linux-gcc-cxx-avx2:
428  extends:
429    - .stage-3
430    - .linux_test
431  tags:
432    - name:isdp001
433  variables:
434    TEST_ARCH: arch-ci-linux-gcc-cxx-avx2
435
436linux-knl:
437  extends:
438    - .stage-3
439    - .linux_test
440  tags:
441    - name:isdp001
442  variables:
443    TEST_ARCH: arch-ci-linux-knl
444
445linux-c-exodus-dbg:
446  extends:
447    - .stage-3
448    - .linux_test
449  tags:
450    - name:frog
451  variables:
452    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
453    TEST_ARCH: arch-ci-linux-c-exodus-dbg
454
455linux-cuda-single:
456  extends:
457    - .stage-3
458    - .linux_test
459  tags:
460    - name:frog
461  variables:
462    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -cuda_initialize 0
463    TEST_ARCH: arch-ci-linux-cuda-single
464
465linux-viennacl:
466  extends:
467    - .stage-3
468    - .linux_test
469  tags:
470    - name:frog
471  variables:
472    TEST_ARCH: arch-ci-linux-viennacl
473
474linux-opt-misc:
475  extends:
476    - .stage-3
477    - .linux_test
478  tags:
479    - name:compute004
480  variables:
481    TEST_ARCH: arch-ci-linux-opt-misc
482
483linux-pkgs-cxx-mlib:
484  extends:
485    - .stage-3
486    - .linux_test
487  tags:
488    - name:pj02
489  variables:
490    PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump -saws_port_auto_select -saws_port_auto_select_silent
491    TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib
492
493linux-cxx-cmplx-pkgs-64idx:
494  extends:
495    - .stage-3
496    - .linux_test
497  tags:
498    - name:pj01
499  variables:
500    TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx
501
502linux-pkgs-dbg-ftn-interfaces:
503  extends:
504    - .stage-3
505    - .linux_test
506  tags:
507    - name:pj02
508  variables:
509    TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces
510
511linux-analyzer:
512  extends:
513    - .stage-3
514    - .linux_test
515  tags:
516    - mcs-nfs
517  variables:
518    TEST_ARCH: arch-ci-linux-analyzer
519
520linux-gcc-ifc-cmplx:
521  extends:
522    - .stage-3
523    - .linux_test
524  tags:
525    - mcs-nfs
526  variables:
527    TEST_ARCH: arch-ci-linux-gcc-ifc-cmplx
528
529linux-gcov:
530  extends:
531    - .stage-3
532    - .linux_test
533  tags:
534    - mcs-nfs
535  variables:
536    TEST_ARCH: arch-ci-linux-gcov
537
538linux-ILP64:
539  extends:
540    - .stage-3
541    - .linux_test
542  tags:
543    - name:compute004
544  variables:
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