xref: /petsc/.gitlab-ci.yml (revision 02e5f532130dd5964f230934dd81ce13d709f9f1)
1
2# test-short take only a few minutes and generally run on the cloud; they do not run the full test suite or external packages.
3#
4# test-long often runs on MCS systems and may take an hour or more. They run the full test suite and may test external packages.
5#
6# The test-long tests are only started if all of the test-short tests run without error and if the merge request has
7# been labeled with "fulltest".
8#
9
10stages:
11  - test-short
12  - test-long
13variables:
14  GIT_STRATEGY: fetch
15  GIT_CLEAN_FLAGS: -ffdxq
16  PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
17
18#
19# The most basic template that most tests will expand upon. It ensures that the tests are run only for merge requests.
20#
21
22.test:
23  only:
24    refs:
25      - merge_requests
26
27#
28#  This provides the basic order of operations and options template for cloud based test-short tests.
29#  Not all test-short need to follow this template but most will.
30#
31
32.test-short:
33  extends: .test
34  stage: test-short
35  image: jedbrown/mpich-ccache
36  before_script:
37    - echo nproc=$(nproc)
38    - cat /proc/cpuinfo
39    - export CCACHE_COMPILERCHECK=content
40    - export CCACHE_DIR=$(pwd)/.ccache
41    - ccache --show-stats
42    - ccache --zero-stats
43  script:
44    - ${PYTHON} ./configure --with-debugging=0 COPTFLAGS='-O -march=native' CXXOPTFLAGS='-O -march=native' FOPTFLAGS='-O -march=native' ${CONFIG_OPTS}
45    - make CFLAGS=-Werror
46    - make allgtests-tap search="${TEST_SEARCH}" TIMEOUT=300
47  after_script:
48    - CCACHE_DIR=$(pwd)/.ccache ccache --show-stats
49  artifacts:
50    reports:
51      junit: arch-*/tests/testresults.xml
52  cache:
53    paths:
54      - .ccache/
55    key: "${CI_JOB_NAME}"
56
57#
58# The following tests run on the cloud as part of test-short.
59#
60
61mpich-cxx-py3:
62  extends: .test-short
63  variables:
64    PYTHON: python3
65    CONFIG_OPTS: --with-mpi-dir=/usr/local --with-clanguage=cxx --with-fc=0
66    TEST_SEARCH: snes_tutorials-ex48%
67
68uni-complex-float-int64:
69  extends: .test-short
70  variables:
71    PYTHON: python3
72    CONFIG_OPTS: <
73      --with-mpi=0
74      --with-scalar-type=complex --with-precision=single --with-64-bit-indices
75    TEST_SEARCH: ts_tutorials-ex11_adv_2d_quad_%
76
77c89-mlib-static-py2:
78  extends: .test-short
79  image: jedbrown/mpich-ccache:python2
80  variables:
81    PYTHON: python2
82    CONFIG_OPTS: <
83      --with-mpi-dir=/usr/local
84      --with-single-library=0 --with-shared-libraries=0 'CFLAGS=-std=c89 -pedantic -Wno-long-long -Wno-overlength-strings'
85    TEST_SEARCH: snes_tutorials-ex48%
86
87#
88# This provides the basic order of operations and options template for test-long tests.
89# Not all test-long need to follow this template, but most will.
90#
91.test-long:
92  extends: .test
93  stage: test-long
94  only:
95    variables:
96      - $CI_MERGE_REQUEST_LABELS =~ /fulltest/
97  script:
98    - ./config/examples/${TEST_ARCH}.py
99    - make
100    - make check
101    - make cleantest allgtests-tap TIMEOUT=300
102  artifacts:
103    reports:
104      junit: ${TEST_ARCH}/tests/testresults.xml
105
106#
107# The following tests run on MCS systems as part of test-long.
108#
109# The tags variable used in the tests below connects the particular test with the runners
110# listed on the left hand side of https://gitlab.com/petsc/petsc/-/settings/ci_cd.
111# For example the test linux-gcc-complex-opt which extends .linux_mcs_test will run on
112# any runner that has the tag (in a blue box beneath it) of mcs-linux.
113#
114
115.mcs_test:
116  extends: .test-long
117
118.linux_mcs_test:
119  extends: .mcs_test
120  tags:
121    - mcs-linux
122  before_script:
123    - hostname
124    - grep PRETTY_NAME /etc/os-release
125    - echo $(nproc)
126    - ccache --zero-stats
127  after_script:
128    - ccache --show-stats
129
130.freebsd_mcs_test:
131  extends: .mcs_test
132  tags:
133    - mcs-freebsd
134  before_script:
135    - hostname
136    - freebsd-version
137    - echo $(sysctl -n hw.ncpu)
138    - ccache --zero-stats
139  after_script:
140    - ccache --show-stats
141
142.osx_mcs_test:
143  extends: .mcs_test
144  tags:
145    - mcs-osx
146  variables:
147#  the stages definition defines the first line of PETSC_OPTIONS below. Do they have to be repeated here or can one use
148#  $PETSC_OPTIONS or another option so that they do not need to be repeated?
149    PETSC_OPTIONS: <
150      -check_pointer_intensity 0 -error_output_stdout -nox -nox_warning -malloc_dump
151      -saws_port_auto_select -saws_port_auto_select_silent -vecscatter_mpi1 false -options_left false
152  before_script:
153    - hostname
154    - sw_vers -productVersion
155    - echo $(sysctl -n hw.ncpu)
156    - ccache --zero-stats
157  after_script:
158    - ccache --show-stats
159
160.opensolaris_mcs_test:
161  extends: .mcs_test
162  tags:
163    - mcs-opensolaris
164  before_script:
165    - hostname
166    - uname -a
167    - echo $(nproc)
168
169linux-gcc-complex-opt:
170  extends: .linux_mcs_test
171  variables:
172    TEST_ARCH: arch-ci-linux-gcc-complex-opt
173
174linux-gcc-pkgs-opt:
175  extends: .linux_mcs_test
176  variables:
177    TEST_ARCH: arch-ci-linux-gcc-pkgs-opt
178
179linux-gcc-quad-64idx-dbg:
180  extends: .linux_mcs_test
181  variables:
182    TEST_ARCH: arch-ci-linux-gcc-quad-64idx-dbg
183
184freebsd-c-single-opt:
185  extends: .freebsd_mcs_test
186  variables:
187    TEST_ARCH: arch-ci-freebsd-c-single-opt
188
189freebsd-cxx-cmplx-64idx-dbg:
190  extends: .freebsd_mcs_test
191  variables:
192    TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg
193
194osx-cxx-pkgs-opt:
195  extends: .osx_mcs_test
196  variables:
197    TEST_ARCH: arch-ci-osx-cxx-pkgs-opt
198
199opensolaris-cmplx-pkgs-dbg:
200  extends: .opensolaris_mcs_test
201  variables:
202    TEST_ARCH: arch-ci-opensolaris-cmplx-pkgs-dbg
203
204#
205# The following tests are experimental; more tests by users at other sites may be added below this.  Experimental test
206# that fail produce a warning, but do not block execution of a pipeline.
207#
208
209.test-experimental:
210  extends: .test
211  allow_failure: true
212
213barry-checksource:
214  extends: .test-experimental
215  stage: test-short
216  variables:
217# the blank GIT_CLEAN_FLAGS below indicates that the CI should NOT clean the git directory before running the next test
218    GIT_CLEAN_FLAGS: -qn
219  tags:
220    - barry
221  script:
222    - PETSC_ARCH=arch-barry PETSC_DIR=`pwd` ./configure --with-mpi=0 --with-fc=0
223    - PETSC_ARCH=arch-barry PETSC_DIR=`pwd` make checkbadSource
224
225barry-arch-hash:
226  extends: .test-experimental
227  stage: test-short
228  variables:
229# the blank GIT_CLEAN_FLAGS below indicates that the CI should NOT clean the git directory before running the next test
230    GIT_CLEAN_FLAGS: -qn
231  tags:
232    - barry
233  script:
234    - PETSC_DIR=`pwd` ./configure --with-mpi=0 --with-fc=0 --arch-hash
235    - PETSC_DIR=`pwd` make checkbadSource
236