diff --git a/.gitlab/ci.d/templates.yaml b/.gitlab/ci.d/templates.yaml index 0eeea9619..55bb0fbd3 100644 --- a/.gitlab/ci.d/templates.yaml +++ b/.gitlab/ci.d/templates.yaml @@ -1,318 +1,319 @@ # yaml-language-server: $schema=gitlab-ci # yaml-language-server: $format.enable=false # Split ci .documentation_only: rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: compare_to: 'master' paths: - doc/**/* - examples/**/* - .readthedocs.yaml - README.md - CHANGELOG.md - .gitlab-ci.yml - .gitlab/ci.d/** - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_TAG .code_only: rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: compare_to: 'master' paths: - "**/*.{cc, hh, txt, cmake, py}" - .gitlab-ci.yml - .gitlab/ci.d/** - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_TAG # Configuration template .configure: stage: configure extends: - .code_only variables: BLA_VENDOR: "Generic" #CMAKE_GENERATOR: "Unix Makefiles" CMAKE_GENERATOR: 'Ninja' cache: - key: ${CI_COMMIT_REF_SLUG}-third-party policy: push paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache policy: pull-push paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: push paths: - build/ script: # Create the build folder - cmake -E make_directory build - cd build - echo BUILD_TYPE=${BUILD_TYPE} # Configure the project - cmake -DAKANTU_COHESIVE_ELEMENT:BOOL=TRUE -DAKANTU_IMPLICIT:BOOL=TRUE -DAKANTU_IMPLICIT_SOLVER:STRING="Mumps" -DAKANTU_PARALLEL:BOOL=TRUE -DAKANTU_STRUCTURAL_MECHANICS:BOOL=TRUE -DAKANTU_DIFFUSION:BOOL=TRUE -DAKANTU_DAMAGE_NON_LOCAL:BOOL=TRUE -DAKANTU_PHASE_FIELD:BOOL=TRUE -DAKANTU_PYTHON_INTERFACE:BOOL=TRUE -DAKANTU_CONTACT_MECHANICS:BOOL=TRUE -DAKANTU_EXAMPLES:BOOL=TRUE -DAKANTU_BUILD_ALL_EXAMPLES:BOOL=TRUE -DAKANTU_TESTS:BOOL=TRUE -DAKANTU_RUN_IN_DOCKER:BOOL=TRUE -DAKANTU_TEST_EXAMPLES:BOOL=${TEST_EXAMPLES} -DCMAKE_BUILD_TYPE:STRING=${BUILD_TYPE} -G "${CMAKE_GENERATOR}" .. # Copy the compile commands for the code quality - if [ -e compile_commands.json ]; then - cp compile_commands.json .. - fi artifacts: when: on_success paths: - VERSION - compile_commands.json expire_in: 10h # Build the libraries .build_libs: stage: build_libs extends: - .code_only cache: - key: ${CI_COMMIT_REF_SLUG}-third-party policy: pull paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache policy: pull-push paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: pull-push paths: - build/ script: - echo BUILD_TYPE=${BUILD_TYPE} - cmake --build build -t akantu -j1 > >(tee -a build-${output}-lib-out.log) 2> >(tee -a build-${output}-lib-err.log >&2) - cmake --build build -t py11_akantu -j1 > >(tee -a build-${output}-python-out.log) 2> >(tee -a build-${output}-python-err.log >&2) - ls build/test artifacts: when: on_success paths: - VERSION - build-${output}-*-err.log - compile_commands.json expire_in: 10h timeout: 5h # build the tests .build_tests: stage: build_tests extends: - .code_only cache: - key: ${CI_COMMIT_REF_SLUG}-third-party policy: pull paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache policy: pull-push paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: pull-push paths: - build/ script: - cmake --build build -j1 > >(tee -a build-${output}-out.log) 2> >(tee -a build-${output}-err.log >&2) artifacts: when: on_success paths: - VERSION - build-${output}-*-err.log - compile_commands.json expire_in: 10h # Run the tests .tests: stage: test extends: - .code_only cache: - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: pull paths: - build/ script: - cd build - ctest -T test --output-on-failure --no-compress-output --timeout 1800 after_script: - cd build - tag=$(head -n 1 < Testing/TAG) - if [ -e Testing/${tag}/Test.xml ]; then xsltproc -o ./juint.xml ${CI_PROJECT_DIR}/test/ci/ctest2junit.xsl Testing/${tag}/Test.xml; fi - if [ ${BUILD_TYPE} = "Coverage" ]; then gcovr --xml --gcov-executable "${GCOV_EXECUTABLE}" --xml-pretty --exclude-unreachable-branches --print-summary --output coverage.xml --object-directory ${CI_PROJECT_DIR}/build --root ${CI_PROJECT_DIR} -s || true fi artifacts: when: always expire_in: 2 days paths: - build/juint.xml - build/coverage.xml reports: junit: - build/juint.xml coverage_report: coverage_format: cobertura path: build/coverage.xml # ------------------------------------------------------------------------------ # Python stuffs # ------------------------------------------------------------------------------ .configure_python: stage: configure extends: - .build_release - .code_only cache: - key: ${output}-${BUILD_TYPE}-ccache paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} paths: - build/ - spack/ script: # Variables for cmake - source test/ci/${IMAGE_NAME}/configure_env.sh # create the build folder - cmake -E make_directory build - cd build # Configure in sequential and without tests or examples - cmake -DAKANTU_COHESIVE_ELEMENT:BOOL=TRUE -DAKANTU_IMPLICIT:BOOL=TRUE -DAKANTU_IMPLICIT_SOLVER:STRING=Eigen -DAKANTU_PARALLEL:BOOL=FALSE -DAKANTU_STRUCTURAL_MECHANICS:BOOL=TRUE -DAKANTU_DIFFUSION:BOOL=TRUE -DAKANTU_DAMAGE_NON_LOCAL:BOOL=TRUE -DAKANTU_PHASE_FIELD:BOOL=TRUE -DAKANTU_PYTHON_INTERFACE:BOOL=FALSE -DAKANTU_CONTACT_MECHANICS:BOOL=TRUE -DAKANTU_EXAMPLES:BOOL=FALSE -DAKANTU_TESTS:BOOL=FALSE -DCMAKE_INSTALL_PREFIX:PATH=${CI_PROJECT_DIR}/install -DCMAKE_BUILD_TYPE:STRING=${BUILD_TYPE} .. artifacts: when: on_success paths: - VERSION expire_in: 10h .build_python_akantu: stage: build_libs extends: - .build_release - .code_only cache: - key: ${output}-${BUILD_TYPE}-ccache policy: pull-push paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: pull-push paths: - build/ - spack/ script: - source test/ci/${IMAGE_NAME}/build_env.sh - cmake --build build --target akantu -j1 - cmake --install build artifacts: when: on_success paths: - install/ - VERSION expire_in: 10h .build_python_package: stage: build_tests extends: - .build_release - .code_only cache: - key: ${output}-${BUILD_TYPE}-ccache paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: pull paths: - build/ - spack/ script: - export CI_AKANTU_INSTALL_PREFIX=${CI_PROJECT_DIR}/install - test/ci/${IMAGE_NAME}/make-wheels.sh artifacts: when: on_success paths: - wheelhouse${PLAT_SUFFIX} expire_in: 10h .test_python_package: stage: test extends: - .code_only needs: - job: build_pip:python_package_macos script: - python3 -m venv venv - source venv/bin/activate + - pip install -U pip - pip install numpy scipy - pip install akantu --no-index --find-links=${PWD}/wheelhouse${PLAT_SUFFIX} - python -c "import akantu" - cd examples/python/solid_mechanics_model/dynamics/ - gmsh -2 bar.geo - python ./dynamics.py