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