1# 2# stage-1 take only a few minutes; 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# 8# The stage-(n) tests are only started if all of the stage-(n-1) tests run without error 9# You can limit the testing by using the variable STAGE with value 1 or 2 10# 11 12stages: 13 - stage-1 14 - stage-2 15 - stage-3 16 - stage-4 17variables: 18 GIT_STRATEGY: fetch 19 GIT_CLEAN_FLAGS: -ffdxq 20 TIMEOUT: 450 21 EXTRA_OPTIONS: -nox -nox_warning -malloc_dump 22 23# 24# The most basic template that most tests will expand upon 25# 26 27.test-basic: 28 interruptible: true 29 only: 30 refs: 31# Set with CI/CD Shedules - New Schedule 32 - schedules 33 - api 34# Set with CI/CD Pipelines - Run Pipeline 35 - web 36 - merge_requests 37 dependencies: [] 38 39.test: 40 extends: .test-basic 41 except: 42 variables: 43 # Skip if the docs-only label is attached to a merge request 44 - $CI_MERGE_REQUEST_LABELS =~ /(^|,)docs-only($|,)/ 45 - $PETSC_CI_SCHEDULED =~ /yes/ 46 47check-ci-settings: 48 extends: .test-basic 49 stage: .pre 50 tags: 51 - gce-stage1 52 script: 53 - lib/petsc/bin/maint/check-ci-settings.sh 54 55# 56# This provides the basic order of operations and options template for cloud based stage 1 tests. 57# Not all test-short need to follow this template but most will. 58# 59 60.stage-1: 61 extends: .test 62 stage: stage-1 63 tags: 64 - gce-u22-stage1 65 before_script: 66 - date 67 - hostname 68 - grep PRETTY_NAME /etc/os-release 69 - nproc 70 - lscpu 71 - ccache --zero-stats 72 script: 73 - if [ ! -z ${LOAD_MODULES+x} ]; then module --trace load ${LOAD_MODULES}; module list; fi 74 - if [ ! -z ${INIT_SCRIPT+x} ]; then echo "sourcing ${INIT_SCRIPT}"; if [ -f ${HOME}/${INIT_SCRIPT} ]; then source ${HOME}/${INIT_SCRIPT}; else source ${INIT_SCRIPT}; fi; fi 75 - printf "PATH:$PATH\n" 76 - printf "PYTHONPATH:$PYTHONPATH\n" 77 - printf "CONFIG_OPTS:${CONFIG_OPTS}\n" 78 - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n" 79 - if [ ! -z ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME+x} ]; then printf "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\n" ;fi 80 - ${PYTHON} ./configure --with-debugging=0 COPTFLAGS='-O3 -march=native' CXXOPTFLAGS='-O3 -march=native' FOPTFLAGS='-O3 -march=native' ${CONFIG_OPTS} 81 - make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" 82 - if [ ! -z ${ENABLE_CHECK+x} ]; then make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" check; fi 83 - make CFLAGS="${MAKE_TEST_CFLAGS}" CXXFLAGS="${MAKE_TEST_CXXFLAGS}" FFLAGS="${MAKE_TEST_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" allgtests-tap gmakesearch="${TEST_SEARCH}" TIMEOUT=${TIMEOUT} 84 variables: 85 PYTHON: python3 86 MAKE_CFLAGS: -Werror 87 MAKE_CXXFLAGS: -Werror -Wzero-as-null-pointer-constant 88 MAKE_FFLAGS: -Werror 89 MAKE_TEST_CFLAGS: -Werror 90 MAKE_TEST_CXXFLAGS: -Werror 91 MAKE_TEST_FFLAGS: -Werror 92 after_script: 93 - date 94 - ccache --show-stats 95 artifacts: 96 reports: 97 junit: arch-*/tests/testresults.xml 98 name: "$CI_JOB_NAME" 99 when: always 100 paths: 101 - arch-*/lib/petsc/conf/*.log 102 - arch-*/lib/pkgconfig/petsc.pc 103 - arch-*/tests/testresults.xml 104 - arch-*/tests/test_*_tap.log 105 - arch-*/tests/test_*_err.log 106 expire_in: 4 days 107 108# 109# The following tests run on the cloud as part of stage-1. 110# 111 112ompi-cuda: 113 extends: .stage-1 114 tags: 115 - cuda-stage1 116 variables: 117 CONFIG_OPTS: --with-mpi-dir=/nfs/gce/software/custom/linux-ubuntu22.04-x86_64/spack/opt/spack/linux-ubuntu22.04-x86_64/gcc-11.3.0/openmpi-4.1.3-qrpnszy --with-cuda=1 --with-cuda-arch=all-major --CUDAPPFLAGS=-Wno-deprecated-gpu-targets --with-fc=0 118 TEST_SEARCH: snes_tutorials-ex19_cuda% 119 ENABLE_CHECK: 1 120 MAKE_CXXFLAGS: -Werror 121 MAKE_CUDAFLAGS: -Xcompiler -Wall -Xcompiler -Werror 122 123mpich-cxx-py3: 124 extends: .stage-1 125 variables: 126 CONFIG_OPTS: --with-clanguage=cxx --with-fc=0 CXXFLAGS=-std=c++11 --with-strict-petscerrorcode 127 TEST_SEARCH: snes_tutorials-ex48% 128 LOAD_MODULES: gcc/12.1.0 mpich/4.1-gcc-12.1.0 129 130mpich-cxx-mlib: 131 extends: .stage-1 132 variables: 133 CONFIG_OPTS: --with-clanguage=cxx --with-single-library=0 --with-log=0 --with-info=0 --with-ctable=0 --with-is-color-value-type=short CXXFLAGS=-std=c++14 134 TEST_SEARCH: snes_tutorials-ex48% 135 LOAD_MODULES: gcc/12.1.0 mpich/4.1-gcc-12.1.0 136 137uni-complex-float-int64: 138 extends: .stage-1 139 variables: 140 CONFIG_OPTS: --with-mpi=0 --with-scalar-type=complex --with-precision=single --with-64-bit-indices 141 TEST_SEARCH: ts_tutorials-ex11_adv_2d_quad_% 142 LOAD_MODULES: gcc/12.1.0 mpich/4.1-gcc-12.1.0 143 144c99-mlib-static-py: 145 extends: .stage-1 146 variables: 147 CONFIG_OPTS: --with-single-library=0 --with-shared-libraries=0 --with-strict-petscerrorcode CFLAGS=-std=c99 FFLAGS= CXXFLAGS= 148 ENABLE_CHECK: 1 149 TEST_SEARCH: snes_tutorials-ex19% snes_tutorials-ex5f90t% 150 MAKE_TEST_FFLAGS: -Werror -std=f2008 151 LOAD_MODULES: gcc/12.1.0 mpich/4.1-gcc-12.1.0 152 153clang-uni: 154 extends: .stage-1 155 variables: 156 CONFIG_OPTS: --with-cc=clang --with-cxx=clang++ --with-mpi=0 --with-strict-petscerrorcode 157 TEST_SEARCH: snes_tutorials-ex48% 158 159gcc-lto: 160 extends: .stage-1 161 variables: 162 CONFIG_OPTS: CFLAGS= CXXFLAGS= FFLAGS= 163 MAKE_CFLAGS: -Werror -flto=4 -Werror=odr -Werror=lto-type-mismatch 164 MAKE_CXXFLAGS: -Werror -flto=4 -Werror=odr -Werror=lto-type-mismatch 165 MAKE_FFLAGS: -Werror -flto=4 -Werror=odr -Werror=lto-type-mismatch 166 TEST_SEARCH: snes_tutorials-ex19% snes_tutorials-ex5f% 167 LOAD_MODULES: gcc/12.1.0 mpich/4.1-gcc-12.1.0 168 169petsc4py-install: 170 extends: .stage-2 171 tags: 172 - gce-u22-stage1 173 variables: 174 PYTHON: python3 175 T_PREFIX: petsc-install 176 T_DESTDIR: petsc-destdir 177 T_PETSC4PY: src/binding/petsc4py 178 T_VALIDATE_CMD: lib/petsc/bin/maint/validate-petsc4py.sh 179 script: 180 - printf "PATH:$PATH\n" 181 - mkdir hide 182 - if [ ! -z ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME+x} ]; then printf "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\n" ;fi 183 - ${PYTHON} ./configure --prefix="${PWD}/${T_PREFIX}" --with-petsc4py=1 --with-debugging=0 184 - make CFLAGS=-Werror CXXFLAGS="-Werror -Wzero-as-null-pointer-constant" FFLAGS=-Werror 185 - printf "====== Test A. Install into staging directory then into prefix directory (mimics distro package recipe) =====\n" 186 - make install DESTDIR="${PWD}/${T_DESTDIR}" 187 - test "$(find ${PWD}/${T_PREFIX} -mindepth 1 | wc -l)" -eq 0 188 - test "$(find ${PWD}/${T_DESTDIR} -mindepth 1 | wc -l)" -gt 0 189 - (cd "${PWD}/${T_DESTDIR}" && find * -exec install -v -D "{}" "/{}" \; ) 190 - mv arch-* hide/ && PETSC_DIR="${PWD}/${T_PREFIX}" ${T_VALIDATE_CMD} && mv hide/arch-* ./ 191 - rm -r "${PWD}/${T_PREFIX}" "${PWD}/${T_DESTDIR}" && mkdir "${PWD}/${T_PREFIX}" 192 - printf "====== Test B. Install directly into prefix directory =====\n" 193 - make install 194 - test "$(find ${PWD}/${T_PREFIX} -mindepth 1 | wc -l)" -gt 0 195 - mv arch-* hide/ && PETSC_DIR="${PWD}/${T_PREFIX}" ${T_VALIDATE_CMD} && mv hide/arch-* ./ 196 - rm -r "${PWD}/${T_PREFIX}"/*/petsc4py* 197 - printf "====== Test C. Install manually with setuptools =====\n" 198 - export PETSC_DIR="${PWD}/${T_PREFIX}" && (cd "${T_PETSC4PY}" && ${PYTHON} setup.py build) 199 - export PETSC_DIR="${PWD}/${T_PREFIX}" P="${PWD}" && (cd "${T_PETSC4PY}" && ${PYTHON} setup.py install --install-lib="${P}/${T_PREFIX}/lib") 200 - mv arch-* hide/ && PETSC_DIR="${PWD}/${T_PREFIX}" ${T_VALIDATE_CMD} && mv hide/arch-* ./ 201 - rm -r "${PWD}/${T_PREFIX}"/*/petsc4py* 202 - printf "====== Test D. Install manually with setuptools with staging =====\n" 203 - export PETSC_DIR="${PWD}/${T_PREFIX}" P="${PWD}" && (cd "${T_PETSC4PY}" && ${PYTHON} setup.py install --root="${P}/${T_DESTDIR}" --install-lib="${P}/${T_PREFIX}/lib") 204 - (cd "${PWD}/${T_DESTDIR}" && find * -exec install -v -D "{}" "/{}" \; ) 205 - mv arch-* hide/ && PETSC_DIR="${PWD}/${T_PREFIX}" ${T_VALIDATE_CMD} && mv hide/arch-* ./ 206 207petsc4py-pip: 208 extends: .stage-2 209 tags: 210 - gce-u22-stage1 211 variables: 212 PETSC_CONFIGURE_OPTIONS: --with-mpi=0 --with-fc=0 213 CFLAGS: -O0 214 script: 215 - python3 -m venv pip-builds 216 - source pip-builds/bin/activate 217 - python -m pip install --upgrade pip 218 - unset PETSC_DIR PETSC_ARCH 219 - export PIP_WHEEL_DIR="${PWD}/wheelhouse" 220 - export PIP_FIND_LINKS="${PIP_WHEEL_DIR}" 221 - mkdir -p "${PIP_WHEEL_DIR}" 222 - python -m pip wheel . 223 - python -m pip wheel src/binding/petsc4py 224 - python -m pip install --pre --no-index --no-cache-dir petsc4py 225 - python -m pip list 226 - python -m petsc --prefix 227 - python -m petsc4py 228 229checksource: 230 extends: .test-basic 231 stage: .pre 232 tags: 233 - gce-u22-stage1 234 script: 235 - python3 ./configure --with-mpi=0 --with-fc=0 --with-cxx=0 --with-x=0 --with-bison=0 --with-cmake=0 --with-pthread=0 --with-regex=0 236 - vermin --version 237 - make vermin 238 - PATH=/nfs/gce/projects/petsc/soft/u22.04/spack-2024-03-06/opt/spack/linux-ubuntu22.04-x86_64/gcc-11.4.0/llvm-18.1.0-7hsf4hzma6aebqsd4ifb5brchcooktkp/bin:$PATH make checkclangformat SHELL=bash 239 - make checkbadSource SHELL=bash 240 - make checkbadFileChange SHELL=bash 241 - make -f gmakefile check_output SHELL=bash 242 - make check_petsc4py_rst 243 - make -C src/binding/petsc4py lint 244 artifacts: 245 name: "$CI_JOB_NAME" 246 when: always 247 paths: 248 - arch-*/lib/petsc/conf/*.patch 249 - arch-*/lib/petsc/conf/*.log 250 expire_in: 4 days 251 252pause-for-approval: 253 extends: .test 254 stage: .pre 255 tags: 256 - gce-stage1 257 only: 258 refs: 259 - merge_requests 260 variables: 261 - $CI_MERGE_REQUEST_EVENT_TYPE == "merged_result" 262 - $CI_MERGE_REQUEST_EVENT_TYPE == "detached" 263 script: 264 - echo "pause-for-approval has no script to run" 265 variables: 266 GIT_STRATEGY: none 267 when: manual 268 allow_failure: false 269 270# 271# Basic template for code coverage generation. Tests should additionally inherit from the more 272# specialized OS-specific versions instead of this one. 273# 274 275.coverage-generate: 276 variables: 277 RUN_GCOV: 1 278 RUN_GCOV_OPTIONS: --decisions 279 280.coverage-disable: 281 variables: 282 RUN_GCOV: 0 283 284# 285# This provides the basic order of operations and options template for stage-2,3 tests. 286# Not all stage-2,3 need to follow this template, but most will. 287# 288.stage-23: 289 extends: 290 - .test 291 - .coverage-generate 292 script: 293 - if [ ! -z ${LOAD_MODULES+x} ]; then module --trace load ${LOAD_MODULES}; module list; fi 294 - if [ ! -z ${GCOV_MODULES+x} ]; then module --trace load ${GCOV_MODULES}; module list; fi 295 - if [ ! -z ${INIT_SCRIPT+x} ]; then echo "sourcing ${INIT_SCRIPT}"; if [ -f ${HOME}/${INIT_SCRIPT} ]; then source ${HOME}/${INIT_SCRIPT}; else source ${INIT_SCRIPT}; fi; fi 296 - if [ "${RUN_GCOV}" == 1 ]; then 297 printf "RUN_GCOV_OPTIONS:$RUN_GCOV_OPTIONS\n"; 298 gcovr --version; 299 fi 300 - if [ -d ${HOME}/petsc-hash-pkgs/ ]; then find ${HOME}/petsc-hash-pkgs/ -maxdepth 1 -mindepth 1 -type d -mtime +25 -exec rm -rf {} \; ; fi 301 - printf "PATH:$PATH\n" 302 - printf "PYTHONPATH:$PYTHONPATH\n" 303 - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n" 304 - if [ ! -z ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME+x} ]; then printf "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\n" ;fi 305 - printf "./config/examples/${TEST_ARCH}.py\n" 306 - cat ./config/examples/${TEST_ARCH}.py 307 - ./config/examples/${TEST_ARCH}.py || if [ -f naglicenseproblem ]; then exit 126; else exit 1; fi 308 - make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" || if [ -f naglicenseproblem ]; then exit 126; else exit 1; fi 309 - export ASAN_OPTIONS="log_path=stdout:detect_leaks=false" UBSAN_OPTIONS="suppressions=${PWD}/share/petsc/suppressions/ubsan" # only needed for -fsanitize=undefined (but harmless otherwise) 310 - make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" check || if [ -f naglicenseproblem ]; then exit 126; else exit 1; fi 311 - make updatedatafiles 312 - if [ -z ${DISABLE_PETSC4PY_TESTS+x} ]; then if [ -z ${ENABLE_PETSC4PY_LDPRELOAD+x} ]; then echo "NOT using LD_PRELOAD"; make petsc4pytest; else echo "using LD_PRELOAD"; LD_PRELOAD=${PWD}/${TEST_ARCH}/lib/libpetsc.so make petsc4pytest; fi; fi 313 - if [ -z ${DISABLE_TESTS+x} ]; then make cleantest && make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" allgtests-tap TIMEOUT=${TIMEOUT} ${TEST_OPTS} || if [ -f naglicenseproblem ]; then exit 126; else exit 1; fi; fi 314 - if [ "${RUN_GCOV}" == 1 ]; then make gcov PETSC_GCOV_OPTIONS="${RUN_GCOV_OPTIONS}"; fi 315 artifacts: 316 reports: 317 junit: arch-*/tests/testresults.xml 318 name: "$CI_JOB_NAME" 319 when: always 320 paths: 321 - arch-*/lib/petsc/conf/*.log 322 - arch-*/lib/pkgconfig/petsc.pc 323 - arch-*/tests/testresults.xml 324 - arch-*/tests/test_arch-*_tap.log 325 - arch-*/tests/test_arch-*_err.log 326 - arch-*/arch-*-gcovr-report.json.tar.bz2 327 expire_in: 4 days 328 variables: 329 OPENBLAS_NUM_THREADS: 1 330 331.stage-2: 332 extends: .stage-23 333 stage: stage-2 334 335.stage-3: 336 extends: .stage-23 337 stage: stage-3 338 339# 340# The following provide templates for various OSes for pre/post info 341# 342 343.linux_test_noflags: 344 before_script: 345 - date 346 - hostname 347 - grep PRETTY_NAME /etc/os-release 348 - nproc 349 - lscpu 350 - ccache --zero-stats 351 after_script: 352 - date 353 - ccache --show-stats 354 355.linux_test_nofflags: 356 extends: .linux_test_noflags 357 variables: 358 MAKE_CFLAGS: -Werror 359 MAKE_CXXFLAGS: -Werror 360 361.linux_test: 362 extends: .linux_test_noflags 363 variables: 364 MAKE_CFLAGS: -Werror 365 MAKE_CXXFLAGS: -Werror 366 MAKE_FFLAGS: -Werror 367 368.freebsd_test: 369 extends: 370 - .coverage-disable 371 variables: 372 MAKE_CFLAGS: -Werror 373 MAKE_CXXFLAGS: -Werror 374 MAKE_FFLAGS: -Werror 375 before_script: 376 - date 377 - hostname 378 - freebsd-version 379 - echo $(sysctl -n hw.ncpu) 380 - ccache --zero-stats 381 after_script: 382 - date 383 - ccache --show-stats 384 385.osx_test: 386 variables: 387 MAKE_CFLAGS: -Werror 388 MAKE_CXXFLAGS: -Werror 389 MAKE_FFLAGS: -Werror 390 before_script: 391 - date 392 - hostname 393 - sw_vers -productVersion 394 - echo $(sysctl -n hw.ncpu) 395 - ccache --zero-stats 396 after_script: 397 - date 398 - ccache --show-stats 399 400.mswin_test: 401 extends: 402 - .coverage-disable 403 before_script: 404 - date 405 - hostname 406 - uname -a 407 - nproc 408 after_script: 409 - date 410 411# 412# The following tests run as part of stage-2. 413# 414# The tags variable used in the tests below connects the particular test with the runners 415# listed on the left hand side of https://gitlab.com/petsc/petsc/-/settings/ci_cd. 416# For example the test 'linux-sycl-double' any runner that has the tags 'gce-u22-stage3, linux-fast' 417# (in a blue box beneath it) 418# 419 420osx-arm: 421 extends: 422 - .stage-3 423 - .osx_test 424 - .coverage-disable 425 tags: 426 - os:macos-arm 427 variables: 428 TEST_ARCH: arch-ci-osx-arm 429 PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout 430 INIT_SCRIPT: .zprofile 431 432freebsd-cxx-cmplx-64idx-dbg: 433 extends: 434 - .stage-2 435 - .freebsd_test 436 tags: 437 - os:fbsd 438 variables: 439 TEST_ARCH: arch-ci-freebsd-cxx-cmplx-64idx-dbg 440 441freebsd-c-single-opt: 442 extends: 443 - .stage-2 444 - .freebsd_test 445 tags: 446 - os:fbsd 447 variables: 448 TEST_ARCH: arch-ci-freebsd-c-single-opt 449 450mswin-opt-impi: 451 extends: 452 - .stage-3 453 - .mswin_test 454 tags: 455 - mswin-stage3 456 variables: 457 TEST_ARCH: arch-ci-mswin-opt-impi 458 TEST_OPTS: search='ksp_ksp_tests*' 459 460linux-gcc-quad-64idx-dbg: 461 extends: 462 - .stage-2 463 - .linux_test 464 tags: 465 - gce-stage2 466 variables: 467 TEST_ARCH: arch-ci-linux-gcc-quad-64idx-dbg 468 469linux-gcc-pkgs-opt: 470 extends: 471 - .stage-2 472 - .linux_test 473 tags: 474 - gce-stage2 475 variables: 476 TEST_ARCH: arch-ci-linux-gcc-pkgs-opt 477 except: 478 variables: 479 - $PETSC_CI_SCHEDULED =~ /yes/ 480 481linux-gcc-complex-opt-32bit: 482 extends: 483 - .stage-2 484 - .linux_test 485 tags: 486 - gce-stage2 487 variables: 488 TEST_ARCH: arch-ci-linux-gcc-complex-opt-32bit 489 490linux-emcc: 491 extends: 492 - .stage-2 493 - .linux_test 494 - .coverage-disable 495 tags: 496 - gce-stage2 497 variables: 498 TEST_ARCH: arch-ci-linux-emcc 499 INIT_SCRIPT: /nfs/gce/projects/petsc/soft/u22.04/emsdk/emsdk_env.sh 500 DISABLE_TESTS: 1 501 502# 503# The following tests run as part of stage-3. 504# 505 506freebsd-cxx-cmplx-pkgs-dbg: 507 extends: 508 - .stage-3 509 - .freebsd_test 510 tags: 511 - os:fbsd 512 variables: 513 TEST_ARCH: arch-ci-freebsd-cxx-cmplx-pkgs-dbg 514 515freebsd-cxx-pkgs-opt: 516 extends: 517 - .stage-3 518 - .freebsd_test 519 tags: 520 - os:fbsd 521 variables: 522 PETSC_OPTIONS: -vecscatter_mpi1 false -options_left false 523 TEST_ARCH: arch-ci-freebsd-cxx-pkgs-opt 524 525freebsd-pkgs-opt: 526 extends: 527 - .stage-3 528 - .freebsd_test 529 tags: 530 - os:fbsd 531 variables: 532 TEST_ARCH: arch-ci-freebsd-pkgs-opt 533 MAKE_CFLAGS: -DPETSC_SKIP_COMPLEX -Werror 534 535linux-hip-double: 536 extends: 537 - .stage-3 538 - .linux_test_noflags 539 - .coverage-disable 540 tags: 541 - gpu:amd, os:linux 542 variables: 543 TEST_ARCH: arch-ci-linux-hip-double 544 545linux-sycl-double: 546 extends: 547 - .stage-3 548 - .linux_test_nofflags 549 - .coverage-disable 550 tags: 551 - gce-u22-stage3, linux-fast 552 variables: 553 MODULEPATH: /nfs/gce/projects/petsc/soft/u22.04/oneapi/modulefiles 554 TEST_ARCH: arch-ci-linux-sycl-double 555 LOAD_MODULES: compiler/latest mpi/latest 556 TEST_OPTS: query=requires queryval=kokkos_kernels 557 MAKE_CFLAGS: -Wno-expected-file-type -Werror 558 559linux-cuda-pkgs: 560 extends: 561 - .stage-3 562 - .linux_test 563 tags: 564 - cuda-stage3 565 variables: 566 TEST_ARCH: arch-ci-linux-cuda-pkgs 567 # run all tests that: 568 # 1. require cuda, OR 569 # 2. require device, OR 570 # 3. require hypre, OR 571 # 4. require kokkos[_kernels], AND lives in the vec subdirectory 572 # 573 # need to use the alternate OR spelling since '|' is interpreted as a pipe by the 574 # shell, and I could not manage to escape it enough times... 575 TEST_OPTS: -j3 queryval='cuda,device,hypre,kokkos*,vec*' query='requires,requires,requires,requires%OR%name' 576 MAKE_CUDAFLAGS: --compiler-options -Wall,-Werror 577 578linux-cuda112-omp: 579 extends: 580 - .stage-3 581 - .linux_test 582 - .coverage-disable 583 tags: 584 - cuda-stage3 585 variables: 586 TEST_ARCH: arch-ci-linux-cuda112-omp 587 TEST_OPTS: -j4 query=requires queryval=kokkos_kernels 588 LOAD_MODULES: cuda/11.2.2 u-gcc-9/9.4.0 589 OMP_PROC_BIND: "false" 590 OMP_NUM_THREADS: 1 591 MAKE_CUDAFLAGS: --compiler-options -Wall,-Werror 592 593linux-cuda-cmplx: 594 extends: 595 - .stage-3 596 - .linux_test 597 tags: 598 - cuda-stage3 599 variables: 600 TEST_ARCH: arch-ci-linux-cuda-cmplx 601 MAKE_CUDAFLAGS: --compiler-options -Wall,-Werror 602 603linux-cuda-double-64idx: 604 extends: 605 - .stage-3 606 - .linux_test 607 tags: 608 - cuda12 609 variables: 610 TEST_ARCH: arch-ci-linux-cuda-double-64idx 611 TEST_OPTS: -j3 query=requires queryval=cuda 612 MAKE_CUDAFLAGS: --compiler-options -Wall,-Werror 613 614linux-cuda-single-cxx: 615 extends: 616 - .stage-3 617 - .linux_test_noflags 618 - .coverage-disable 619 tags: 620 - cuda-stage3 621 variables: 622 TEST_ARCH: arch-ci-linux-cuda-single-cxx 623 MODULEPATH: /nfs/gce/projects/petsc/soft/u22.04/spack-2023-02-02/share/spack/modules/linux-ubuntu22.04-ivybridge 624 LOAD_MODULES: nvhpc-22.11-gcc-11.3.0-vmvmbrx 625 TEST_OPTS: -j15 query=requires queryval=cuda 626 627linux-cuda-uni-pkgs: 628 extends: 629 - .stage-3 630 - .linux_test 631 tags: 632 - cuda-stage3 633 variables: 634 TEST_ARCH: arch-ci-linux-cuda-uni-pkgs 635 TEST_OPTS: -j20 query=requires queryval=cuda 636 MAKE_CUDAFLAGS: --compiler-options -Wall,-Werror 637 638linux-clang-cuda: 639 extends: 640 - .stage-3 641 - .linux_test 642 - .coverage-disable 643 tags: 644 - cuda-stage3 645 variables: 646 TEST_ARCH: arch-ci-linux-clang-cuda 647 TEST_OPTS: -j 1 queryval='cuda*,snes*' query='requires%OR%name' 648 MODULEPATH: /nfs/gce/projects/petsc/soft/u22.04/spack-2023-02-02/share/spack/modules/linux-ubuntu22.04-ivybridge 649 LOAD_MODULES: llvm-15.0.7-gcc-11.3.0-pjldtxf cuda-11.5.2-gcc-11.3.0-jkoottx gcc-11.3.0-gcc-11.3.0-pgrvke5 650 MAKE_CUDAFLAGS: -Wno-pass-failed -Werror 651 652linux-viennacl: 653 extends: 654 - .stage-3 655 - .linux_test 656 tags: 657 - cuda-stage3 658 variables: 659 TEST_ARCH: arch-ci-linux-viennacl 660 MAKE_CXXFLAGS: -Werror -Wno-ignored-attributes 661 TEST_OPTS: -j20 query=requires queryval=viennacl 662 663linux-without-fc: 664 extends: 665 - .stage-3 666 - .linux_test 667 tags: 668 - gce-u22-stage3 669 variables: 670 TEST_ARCH: arch-ci-linux-without-fc 671 672linux-cmplx-single-arm: 673 extends: 674 - .stage-3 675 - .linux_test 676 # gcovr does not work on arm/linux 677 - .coverage-disable 678 tags: 679 - arch:arm, os:linux 680 variables: 681 FLEXIBLAS: netlib 682 TEST_ARCH: arch-ci-linux-cmplx-single-arm 683 684linux-gcc-cxx-avx2: 685 extends: 686 - .stage-3 687 - .linux_test 688 tags: 689 - name:petsc-knl-01 690 variables: 691 TEST_ARCH: arch-ci-linux-gcc-cxx-avx2 692 693linux-clang-avx: 694 extends: 695 - .stage-3 696 - .linux_test 697 tags: 698 - name:petsc-knl-01 699 variables: 700 TEST_ARCH: arch-ci-linux-clang-avx 701 702linux-knl: 703 extends: 704 - .stage-3 705 - .linux_test 706 - .coverage-disable 707 tags: 708 - name:petsc-knl-01 709 variables: 710 MAKE_FFLAGS: -warn errors 711 TEST_ARCH: arch-ci-linux-knl 712 LOAD_MODULES: intel-oneapi-compilers/2022.0.2 intel-oneapi-mkl/2022.0.2 intel-oneapi-mpi/2021.5.1 713 714linux-intel-mkl-single: 715 extends: 716 - .stage-3 717 - .linux_test_nofflags 718 - .coverage-disable 719 tags: 720 - name:petsc-knl-01 721 variables: 722 TEST_ARCH: arch-ci-linux-intel-mkl-single 723 LOAD_MODULES: intel-oneapi-compilers/2022.0.2 intel-oneapi-mkl/2022.0.2 intel-oneapi-mpi/2021.5.1 724 725linux-cxx-cmplx-pkgs-64idx: 726 extends: 727 - .stage-3 728 - .linux_test 729 tags: 730 - gce-u22-stage3 731 variables: 732 TEST_ARCH: arch-ci-linux-cxx-cmplx-pkgs-64idx 733 PETSC_OPTIONS: -fp_trap 734 735# Set env vars for 'Kokkos + OpenMP' tests, so that they won't give warnings 736linux-pkgs-dbg-ftn-interfaces: 737 extends: 738 - .stage-3 739 - .linux_test 740 - .coverage-disable 741 tags: 742 - gce-u22-stage3 743 variables: 744 TEST_ARCH: arch-ci-linux-pkgs-dbg-ftn-interfaces 745 OMP_PROC_BIND: "false" 746 OMP_NUM_THREADS: 4 747 PETSC_OPTIONS: -fp_trap 748 749linux-pkgs-cxx-mlib: 750 extends: 751 - .stage-3 752 - .linux_test 753 tags: 754 - gce-u22-stage3 755 variables: 756 TEST_ARCH: arch-ci-linux-pkgs-cxx-mlib 757 PETSC_OPTIONS: -fp_trap 758 759linux-pkgs-valgrind: 760 extends: 761 - .stage-3 762 - .linux_test 763 tags: 764 - gce-valgrind 765 variables: 766 TEST_ARCH: arch-ci-linux-pkgs-valgrind 767 TIMEOUT: 7200 768 769linux-pkgs-opt: 770 extends: 771 - .stage-3 772 - .linux_test 773 tags: 774 - gce-u22-stage3, linux-fast 775 variables: 776 TEST_ARCH: arch-ci-linux-pkgs-opt 777 LOAD_MODULES: gcc/12.1.0 778 MAKE_CXXFLAGS: -Wno-deprecated-declarations -Werror 779 780linux-pkgs-dbg: 781 extends: 782 - .stage-3 783 - .linux_test 784 tags: 785 - gce-u22-stage3, linux-gcov 786 variables: 787 TEST_ARCH: arch-ci-linux-pkgs-dbg 788 PETSC_OPTIONS: -fp_trap 789 790linux-matlab-ilp64: 791 extends: 792 - .stage-3 793 - .linux_test 794 tags: 795 - gce-u22-stage3, linux-gcov 796 variables: 797 TEST_ARCH: arch-ci-linux-matlab-ilp64 798 LOAD_MODULES: gcc/9.4.0 matlab/R2022a 799 allow_failure: true 800 801linux-pgi: 802 extends: 803 - .stage-3 804 - .linux_test_noflags 805 - .coverage-disable 806 tags: 807 - gce-u22-stage3, linux-mcpu 808 variables: 809 TEST_ARCH: arch-ci-linux-pgi 810 LOAD_MODULES: nvhpc/22.3 811 812# If the Nag license server fails then ${PETSC_DIR}/naglicenseproblem is created and the job is marked as failed but allow_failure 813linux-nagfor: 814 extends: 815 - .stage-3 816 - .linux_test_nofflags 817 tags: 818 - gce-stage2, linux-mcpu 819 variables: 820 LOAD_MODULES: nag/6.1 821 TEST_ARCH: arch-ci-linux-nagfor 822 allow_failure: 823 exit_codes: 126 824 825linux-intel-cmplx: 826 extends: 827 - .stage-3 828 - .linux_test_nofflags 829 - .coverage-disable 830 tags: 831 - gce-u22-stage3 832 variables: 833 TEST_ARCH: arch-ci-linux-intel-cmplx 834 LOAD_MODULES: intel-oneapi-compilers/2023.0.0 intel-oneapi-mkl/2022.0.2 835 836linux-xsdk-dbg: 837 extends: 838 - .stage-3 839 - .linux_test 840 tags: 841 - gce-u22-stage3 842 variables: 843 TEST_ARCH: arch-ci-linux-xsdk-dbg 844 LOAD_MODULES: gcc/12.1.0 845 846check-each-commit: 847 extends: 848 - .stage-2 849 - .linux_test 850 - .coverage-disable 851 tags: 852 - gce-u22-stage2 853 script: 854 - export PATH=/nfs/gce/projects/petsc/soft/u22.04/spack-2024-03-06/opt/spack/linux-ubuntu22.04-x86_64/gcc-11.4.0/llvm-18.1.0-7hsf4hzma6aebqsd4ifb5brchcooktkp/bin:$PATH 855 - lib/petsc/bin/maint/check-each-commit.sh 856 except: 857 variables: 858 - $PETSC_CI_SCHEDULED =~ /yes/ 859 allow_failure: true 860 861linux-analyzer: 862 extends: 863 - .stage-2 864 - .linux_test 865 - .coverage-disable 866 tags: 867 - gce-u22-stage2 868 script: 869 - printf "PATH:$PATH\n" 870 - printf "PYTHONPATH:$PYTHONPATH\n" 871 - python3 --version 872 - git --version 873 - mypy --version 874 - vermin --version 875 - printf "PETSC_OPTIONS:$PETSC_OPTIONS\n" 876 - if [ ! -z ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME+x} ]; then printf "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\n" ;fi 877 - printf "./config/examples/${TEST_ARCH}.py\n" 878 - cat ./config/examples/${TEST_ARCH}.py 879 - ./config/examples/${TEST_ARCH}.py 880 - make LINTER_OPTIONS="${LINTER_OPTIONS}" test-lint 881 - make V=3 LINTER_OPTIONS="${LINTER_OPTIONS} -- ./src" lint 882 variables: 883 TEST_ARCH: arch-ci-linux-analyzer 884 LINTER_OPTIONS: "--PETSC_ARCH=${TEST_ARCH} --clang_lib=`llvm-config-14 --libdir`/libclang.so.1 --werror 1" 885 artifacts: 886 paths: 887 - arch-*/lib/petsc/conf/*.log 888 - ./petscLintPatches/*.patch 889 expire_in: 4 days 890 except: 891 variables: 892 - $PETSC_CI_SCHEDULED =~ /yes/ 893 894linux-intel: 895 extends: 896 - .stage-3 897 - .linux_test_nofflags 898 - .coverage-disable 899 tags: 900 - gce-u22-stage3 901 variables: 902 TEST_ARCH: arch-ci-linux-intel 903 LOAD_MODULES: intel-oneapi-compilers/2023.0.0 intel-oneapi-mkl/2022.0.2 904 905linux-clang-ubsan: 906 extends: 907 - .stage-2 908 - .linux_test 909 - .coverage-disable 910 tags: 911 - gce-u22-stage2 912 variables: 913 TEST_ARCH: arch-ci-linux-clang-ubsan 914 LOAD_MODULES: llvm/17.0.4 915 916linux-opt-arm: 917 extends: 918 - .stage-3 919 - .linux_test 920 # gcovr does not work on arm/linux 921 - .coverage-disable 922 tags: 923 - arch:arm, os:linux 924 variables: 925 TEST_ARCH: arch-ci-linux-opt-arm 926 927linux-pkgs-64idx: 928 extends: 929 - .stage-3 930 - .linux_test 931 tags: 932 - gce-u22-stage3, linux-mcpu 933 variables: 934 TEST_ARCH: arch-ci-linux-pkgs-64idx 935 LOAD_MODULES: intel-oneapi-mkl/2022.0.2 936 937linux-64idx-i8: 938 extends: 939 - .stage-3 940 - .linux_test 941 tags: 942 - gce-u22-stage3, linux-mcpu 943 variables: 944 TEST_ARCH: arch-ci-linux-64idx-i8 945 946linux-gcc-ifc-cmplx: 947 extends: 948 - .stage-3 949 - .linux_test_nofflags 950 tags: 951 - gce-u22-stage3 952 variables: 953 TEST_ARCH: arch-ci-linux-gcc-ifc-cmplx 954 LOAD_MODULES: intel-oneapi-compilers/2022.2.1 955 956linux-opt-cxx-quad: 957 extends: 958 - .stage-3 959 - .linux_test 960 tags: 961 - gce-u22-stage3 962 variables: 963 TEST_ARCH: arch-ci-linux-opt-cxx-quad 964 965linux-ILP64: 966 extends: 967 - .stage-3 968 - .linux_test 969 tags: 970 - gce-u22-stage3 971 variables: 972 TEST_ARCH: arch-ci-linux-ILP64 973 LOAD_MODULES: gcc/8.5.0 mpich/2-1.5-gcc-8.5.0 974 MAKE_CFLAGS: -Wno-discarded-qualifiers -Werror 975 976linux-64idx-i8-uni: 977 extends: 978 - .stage-3 979 - .linux_test 980 tags: 981 - gce-u22-stage3, linux-mcpu 982 variables: 983 TEST_ARCH: arch-ci-linux-64idx-i8-uni 984 985linux-misc-32bit: 986 extends: 987 - .stage-3 988 - .linux_test 989 tags: 990 - gce-u22-stage3 991 variables: 992 TEST_ARCH: arch-ci-linux-misc-32bit 993 994mswin-intel-cxx-cmplx: 995 extends: 996 - .stage-3 997 - .mswin_test 998 tags: 999 - mswin-stage3 1000 variables: 1001 TEST_ARCH: arch-ci-mswin-intel-cxx-cmplx 1002 TIMEOUT: 150 1003 1004mswin-uni: 1005 extends: 1006 - .stage-3 1007 - .mswin_test 1008 tags: 1009 - mswin-stage3 1010 variables: 1011 PETSC_OPTIONS: -check_pointer_intensity 0 -error_output_stdout 1012 TEST_ARCH: arch-ci-mswin-uni 1013 1014mswin-gnu: 1015 extends: 1016 - .stage-3 1017 - .mswin_test 1018 tags: 1019 - mswin-stage3 1020 variables: 1021 TEST_ARCH: arch-ci-mswin-gnu 1022 MAKE_CFLAGS: -Werror 1023 MAKE_CXXFLAGS: -Werror 1024 MAKE_FFLAGS: -Werror 1025 DISABLE_TESTS: 1 1026 1027#mswin-intel: 1028# extends: 1029# - .stage-3 1030# - .mswin_test 1031# tags: 1032# - os:win 1033# variables: 1034# TEST_ARCH: arch-ci-mswin-intel 1035 1036osx-cxx-cmplx-pkgs-dbg: 1037 extends: 1038 - .stage-3 1039 - .osx_test 1040 - .coverage-disable 1041 tags: 1042 - os:macos-x64 1043 variables: 1044 TEST_ARCH: arch-ci-osx-cxx-cmplx-pkgs-dbg 1045 INIT_SCRIPT: .zprofile 1046 1047osx-cxx-pkgs-opt-arm: 1048 extends: 1049 - .stage-3 1050 - .osx_test 1051 - .coverage-disable 1052 tags: 1053 - os:macos-arm 1054 variables: 1055 PETSC_OPTIONS: -vecscatter_mpi1 false -options_left false 1056 TEST_ARCH: arch-ci-osx-cxx-pkgs-opt-arm 1057 MAKE_CXXFLAGS: -Werror -Wno-pass-failed 1058 INIT_SCRIPT: .zprofile 1059 1060osx-dbg: 1061 extends: 1062 - .stage-3 1063 - .osx_test 1064 - .coverage-disable 1065 tags: 1066 - os:macos-x64 1067 variables: 1068 TEST_ARCH: arch-ci-osx-dbg 1069 ASAN_OPTIONS: log_path=stdout 1070 INIT_SCRIPT: .zprofile 1071 1072osx-xsdk-opt: 1073 extends: 1074 - .stage-3 1075 - .osx_test 1076 - .coverage-disable 1077 tags: 1078 - os:macos-x64 1079 variables: 1080 TEST_ARCH: arch-ci-osx-xsdk-opt 1081 INIT_SCRIPT: .zprofile 1082 1083# job for analyzing the coverage results and generating the various reports 1084coverage-analyze: 1085 extends: .test 1086 stage: stage-4 1087 tags: 1088 - gce-u22-short 1089 dependencies: 1090 # stage-2 1091 - linux-gcc-quad-64idx-dbg 1092 - linux-gcc-pkgs-opt 1093 - linux-gcc-complex-opt-32bit 1094 # stage-3 1095 - linux-pkgs-dbg 1096 - linux-matlab-ilp64 1097 - linux-cuda-pkgs 1098 - linux-cxx-cmplx-pkgs-64idx 1099 - linux-cuda-cmplx 1100 - linux-cuda-double-64idx 1101 - linux-cuda-uni-pkgs 1102 - linux-viennacl 1103 - linux-without-fc 1104 - linux-gcc-cxx-avx2 1105 - linux-clang-avx 1106 - linux-pkgs-cxx-mlib 1107 - linux-pkgs-valgrind 1108 - linux-nagfor 1109 - linux-xsdk-dbg 1110 - linux-pkgs-64idx 1111 - linux-pkgs-opt 1112 - linux-64idx-i8 1113 - linux-gcc-ifc-cmplx 1114 - linux-opt-cxx-quad 1115 - linux-ILP64 1116 - linux-64idx-i8-uni 1117 variables: 1118 PYTHON: python3 1119 PETSC_ARCH: arch-ci-analyze-pipeline 1120 before_script: 1121 - date 1122 - hostname 1123 script: 1124 - if [ ! -z ${LOAD_MODULES+x} ]; then module --trace load ${LOAD_MODULES}; module list; fi 1125 - ${PYTHON} --version 1126 - gcovr --version 1127 - printf "PATH:$PATH\n" 1128 - printf "PYTHONPATH:$PYTHONPATH\n" 1129 - if [ ! -z ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME+x} ]; then printf "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\n" ;fi 1130 - ${PYTHON} ./configure --with-mpi=0 --with-cxx=0 --download-sowing --with-fortran-bindings 1131 - make mergegcov PETSC_GCOV_OPTIONS='--ci-mode --verbose' 1132 coverage: /^\s*lines:\s*\d+.\d+\%/ 1133 artifacts: 1134 name: "$CI_JOB_NAME" 1135 when: always 1136 paths: 1137 - arch-ci-analyze-pipeline/gcovr/* 1138 - arch-ci-analyze-pipeline/lib/petsc/conf/*.log 1139 expire_in: 4 days 1140 reports: 1141 coverage_report: 1142 coverage_format: cobertura 1143 path: arch-ci-analyze-pipeline/gcovr/xml/*.xml 1144 1145# template for the coverage review jobs, these must be separate jobs as you cannot deploy multiple 1146# environments from one job... 1147.coverage-review: 1148 extends: .test 1149 stage: .post 1150 tags: 1151 - gce-u22-short 1152 dependencies: 1153 - coverage-analyze 1154 script: 1155 - date 1156 - hostname 1157 artifacts: 1158 name: "$CI_JOB_NAME" 1159 when: always 1160 paths: 1161 - arch-ci-analyze-pipeline/gcovr/* 1162 - arch-ci-analyze-pipeline/lib/petsc/conf/*.log 1163 expire_in: 4 days 1164 1165coverage-total-review: 1166 extends: .coverage-review 1167 environment: 1168 name: coverage/all/$CI_COMMIT_REF_SLUG 1169 url: https://$CI_PROJECT_NAMESPACE.gitlab.io/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/arch-ci-analyze-pipeline/gcovr/html/report.html 1170 auto_stop_in: one week 1171 deployment_tier: testing 1172 1173coverage-untested-review: 1174 extends: .coverage-review 1175 environment: 1176 name: coverage/untested/$CI_COMMIT_REF_SLUG 1177 url: https://$CI_PROJECT_NAMESPACE.gitlab.io/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/arch-ci-analyze-pipeline/gcovr/html_untested/report_untested.html 1178 auto_stop_in: one week 1179 deployment_tier: testing 1180 1181analyze-pipeline: 1182 extends: .coverage-review 1183 script: 1184 - date 1185 - hostname 1186 # This file is created by lib/petsc/bin/maint/gcov.py. If it exists then the CI 1187 # pipeline should fail 1188 - if [ -f ./arch-ci-analyze-pipeline/gcovr/.CI_FAIL ]; then 1189 cat ./arch-ci-analyze-pipeline/gcovr/merge_gcov_errors.log; 1190 exit 1; 1191 fi 1192 allow_failure: true 1193 1194# 1195# Base job for a documentation build (runs in venv to allow installing additional packages without root) 1196# 1197.docs: 1198 stage: stage-2 1199 tags: 1200 - linux-docs 1201 before_script: 1202 - git fetch --unshallow --tags origin +release:remotes/origin/release +main:remotes/origin/main 1203 - module --trace load python-3.11.2-gcc-9.4.0-6p2ktlj 1204 - printf "PATH:$PATH\n" 1205 - printf "PYTHONPATH:$PYTHONPATH\n" 1206 - VENV=venv-petsc-docs && 1207 python3 -m venv $VENV && 1208 . $VENV/bin/activate && 1209 cd doc && 1210 python -m pip install -r requirements.txt 1211 1212# 1213# Build documentation and make available for review using GitLab pages 1214# 1215docs-review: 1216 extends: 1217 - .docs 1218 - .test-basic 1219 script: 1220 - (time make html BUILDDIR="../public" SPHINXOPTS="-T -E -W --keep-going -j 2") || (printf "Sphinx build failed (warnings count as errors)\n" && false) 1221 - (time make latexpdf SPHINXOPTS="-T -E -W --keep-going -j 2") || (printf "Sphinx build failed (warnings count as errors)\n" && false) 1222 - cp _build/latex/manual.pdf ../public/html/manual/ 1223 environment: 1224 name: review/$CI_COMMIT_REF_NAME 1225 url: https://$CI_PROJECT_NAMESPACE.gitlab.io/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/public/html/index.html 1226 auto_stop_in: one week 1227 deployment_tier: development 1228 artifacts: 1229 paths: 1230 - public 1231 expire_in: 4 days 1232 except: 1233 variables: 1234 - $PETSC_CI_SCHEDULED =~ /yes/ 1235 1236# 1237# Deploy documentation using GitLab pages 1238# 1239pages: # this job name has special meaning to GitLab 1240 extends: .docs 1241 interruptible: true 1242 script: 1243 - mkdir -p ../public/ && cp public/* ../public/ 1244 - (git checkout origin/main && pip install -r requirements.txt && make website-deploy SPHINXOPTS="-j 1" BUILDDIR="../public/main" && make latexpdf && mkdir -p ../public/main/manual && cp _build/latex/manual.pdf ../public/main/manual/) || (printf "Sphinx build failed (warnings count as errors)\n" && false) 1245 - cd .. && git clean -fdxq -e public -e venv-petsc-docs && cd doc && rm -rf images 1246 - (git checkout origin/release && pip install -r requirements.txt && make website-deploy SPHINXOPTS="-j 1" BUILDDIR="../public/release" && make latexpdf && mkdir -p ../public/release/manual && cp _build/latex/manual.pdf ../public/release/manual/) || (printf "Sphinx build failed (warnings count as errors)\n" && false) 1247 - rm -rf ../public/*/.doctrees 1248 only: 1249 variables: 1250 - $PETSC_CI_SCHEDULED == "yes" 1251 artifacts: 1252 paths: 1253 - public 1254 expire_in: 4 days 1255 1256# 1257# 1258# The following tests are experimental; more tests by users at other sites may be added below this. Experimental test 1259# that fail produce a warning, but do not block execution of a pipeline. 1260# 1261 1262.test-experimental: 1263 extends: .test 1264 allow_failure: true 1265 1266