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