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