stages: - build_and_test - check_warnings # - analysis # - documentation # - deploy # Todo: Doxygen doc should be published with pages. .build_template_linux: &build_template_linux stage: build_and_test image: registry.gitlab.inria.fr/morefem/thirdpartycompilationfactory/${OS}-${COMPILER}-${MODE} cache: key: "cache_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}" untracked: true paths: - build artifacts: name: "artifact_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}" expire_in: 8 hours paths: - build/compilation.log script: - mkdir -p build - cd build && python ../cmake/Scripts/configure_cmake.py --cache_file=../cmake/PreCache/linux.cmake --cmake_args="-G Ninja" --third_party_directory=/opt --mode=${MODE} --library_type=${LIB_NATURE} --morefem_as_single_library=${IS_ONLY_ONE_LIB} - ninja |& tee compilation.log - ninja test # as artifact are limited in size, I can't unfortunately use a separate stage... .build_template_macos: &build_template_macos stage: build_and_test tags: - macos cache: key: "cache_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}" untracked: true paths: - build artifacts: name: "artifact_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}" expire_in: 8 hours paths: - build/compilation.log script: - mkdir -p build - source activate Python3 - cd build && python ../cmake/Scripts/configure_cmake.py --cache_file=../cmake/PreCache/macos_apple_clang.cmake --cmake_args="-G Ninja" --third_party_directory=/Volumes/Data/ci/opt/${MODE} --mode=${MODE} --library_type=${LIB_NATURE} --morefem_as_single_library=${IS_ONLY_ONE_LIB} - ninja 2>&1 | tee compilation.log - ninja test # as artifact are limited in size, I can't unfortunately use a separate stage... .run_doxygen_template: &run_doxygen_template stage: build_and_test image: ubuntu:latest artifacts: name: "artifact_run_doxygen_${CI_COMMIT_REF_SLUG}_${DOX}" expire_in: 1 day paths: - Documentation/Doxygen/${OUTPUT_FILE} before_script: - apt-get update -y - apt-get install -y doxygen graphviz libjs-mathjax script: - cd Documentation/Doxygen - doxygen ${DOX} .check_compilation_warning_template: &check_compilation_warning_template stage: check_warnings image: alpine:latest before_script: - apk add --update python python-dev && rm -rf /var/cache/apk/* # dependencies: in the instantiations! script: - python Scripts/Tools/find_warning_in_compilation_log.py --log build/compilation.log allow_failure: true .check_doxygen_warning_template: &check_doxygen_warning_template stage: check_warnings image: alpine:latest artifacts: name: "artifact_check_warning_doxygen_${CI_COMMIT_REF_SLUG}_${DOXYGEN_OUTPUT_FILE}" when: on_failure expire_in: 1 day paths: - filtered_doxygen_log.txt before_script: - apk add --update python python-dev && rm -rf /var/cache/apk/* # dependencies: in the instantiations! script: - python Scripts/Tools/find_warning_in_doxygen_log.py --log Documentation/Doxygen/${DOXYGEN_OUTPUT_FILE} allow_failure: true # .test_template: &test_template # stage: check_warnings # image: registry.gitlab.inria.fr/morefem/thirdpartycompilationfactory/${OS}-${COMPILER}-${MODE}:latest # cache: # key: "${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-UniqueLib_${IS_ONLY_ONE_LIB}" # untracked: true # paths: # - build # script: # - cd build && ctest build-Ubuntu-gcc-debug-shared-several_libs: <<: *build_template_linux tags: - ubuntu - gcc - debug variables: OS: "ubuntu" COMPILER: "gcc" MODE: "debug" LIB_NATURE: "shared" IS_ONLY_ONE_LIB: "False" check_warning_Ubuntu-gcc-debug-shared-several_libs: <<: *check_compilation_warning_template dependencies: - build-Ubuntu-gcc-debug-shared-several_libs tags: - ubuntu - gcc - debug variables: OS: "ubuntu" COMPILER: "gcc" MODE: "debug" LIB_NATURE: "shared" IS_ONLY_ONE_LIB: "False" build-Ubuntu-gcc-release-static-one_lib: <<: *build_template_linux tags: - ubuntu - gcc - release variables: OS: "ubuntu" COMPILER: "gcc" MODE: "release" LIB_NATURE: "static" IS_ONLY_ONE_LIB: "True" check_warning_Ubuntu-gcc-release-static-one_lib: <<: *check_compilation_warning_template dependencies: - build-Ubuntu-gcc-release-static-one_lib tags: - ubuntu - gcc - release variables: OS: "ubuntu" COMPILER: "gcc" MODE: "release" LIB_NATURE: "static" IS_ONLY_ONE_LIB: "True" build-Fedora-clang-debug-static-one_lib: <<: *build_template_linux tags: - fedora - clang - debug variables: OS: "fedora" COMPILER: "clang" MODE: "debug" LIB_NATURE: "static" IS_ONLY_ONE_LIB: "True" check_warning_Fedora-clang-debug-static-one_lib: <<: *check_compilation_warning_template dependencies: - build-Fedora-clang-debug-static-one_lib tags: - fedora - clang - debug variables: OS: "fedora" COMPILER: "clang" MODE: "debug" LIB_NATURE: "static" IS_ONLY_ONE_LIB: "True" build-Fedora-clang-release-shared-one_lib: <<: *build_template_linux tags: - fedora - clang - release variables: OS: "fedora" COMPILER: "clang" MODE: "release" LIB_NATURE: "shared" IS_ONLY_ONE_LIB: "False" check_warning_Fedora-clang-release-shared-one_lib: <<: *check_compilation_warning_template dependencies: - build-Fedora-clang-release-shared-one_lib tags: - fedora - clang - debug variables: OS: "fedora" COMPILER: "clang" MODE: "release" LIB_NATURE: "shared" IS_ONLY_ONE_LIB: "False" build-Fedora-gcc-debug-static-one_lib: <<: *build_template_linux tags: - fedora - gcc - debug variables: OS: "fedora" COMPILER: "gcc" MODE: "debug" LIB_NATURE: "static" IS_ONLY_ONE_LIB: "True" check_warning_Fedora-gcc-debug-static-one_lib: <<: *check_compilation_warning_template dependencies: - build-Fedora-gcc-debug-static-one_lib tags: - fedora - gcc - debug variables: OS: "fedora" COMPILER: "gcc" MODE: "debug" LIB_NATURE: "static" IS_ONLY_ONE_LIB: "True" complete_doxygen: <<: *run_doxygen_template variables: DOX: "complete_dev_guide.dox" OUTPUT_FILE: "complete.log" check_warning_complete_doxygen: <<: *check_doxygen_warning_template dependencies: - complete_doxygen variables: DOXYGEN_OUTPUT_FILE: "complete.log" # Pages doesn't work as invoked from a subgroup (not supported yet in gitlab) # pages: # stage: deploy # cache: # key: "$CI_COMMIT_REF_SLUG_doxygen" # untracked: true # paths: # - Documentation/Doxygen # before_script: # - mkdir -p public # tags: # - linux # - debug # script: # - cd Documentation/Doxygen # - mv Complete/* ../../public/ # artifacts: # paths: # - public