common.yml 5.98 KB
Newer Older
1
stages:
2
3
    - build_and_test
    - check_warnings
4
    - analysis
5
    - analysis_sonar
6

7
8
9
10
# As suggested by https://blog.sparksuite.com/7-ways-to-speed-up-gitlab-ci-cd-times-29f60aab69f9
variables:
  DOCKER_DRIVER: overlay2

11
12
.build_template_linux: &build_template_linux
    stage: build_and_test
13
14
    except:
        - master
15
16
    image: registry.gitlab.inria.fr/morefem/thirdpartycompilationfactory/${OS}-${COMPILER}-${MODE}
    cache:
17
        key: "cache_${CI_PROJECT_ID}_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}"
18
19
20
21
        untracked: true
        paths:
            - build
    artifacts:
22
        name: "artifact_${CI_PROJECT_ID}_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}"
23
24
        expire_in: 2 days
        when: always
25
26
27
28
29
30
        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
31
        - ctest --output-on-failure
32
    after_script:
GILLES Sebastien's avatar
GILLES Sebastien committed
33
34
        # Remove the final targets that might be huge with static library, as cache creation could be beforehand
        # more than 80 % of the time spent on the job in the worst cases!
35
36
37
38
        - mv build/Sources/CMakeFiles Tmp
        - rm -rf build/Sources
        - mkdir -p build/Sources
        - mv Tmp build/Sources/CMakeFiles
39
40
41
42
43
44
        
        
.build_template_macos: &build_template_macos
    stage: build_and_test
    tags:
        - macos
45
46
    except:
        - master        
47
    cache:
48
        key: "cache_${CI_PROJECT_ID}_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}"
49
50
51
52
        untracked: true
        paths:
            - build
    artifacts:
53
        name: "artifact_${CI_PROJECT_ID}_${CI_COMMIT_REF_SLUG}_${OS}-${COMPILER}-${MODE}-${LIB_NATURE}-${IS_ONLY_ONE_LIB}"
54
55
        expire_in: 2 days
        when: always
56
57
58
59
        paths:
            - build/compilation.log
    script:
        - mkdir -p build
60
        - conda activate Python3
61
        - 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/clang_${MODE} --mode=${MODE} --library_type=${LIB_NATURE}  --morefem_as_single_library=${IS_ONLY_ONE_LIB}
62
        - ninja 2>&1 | tee compilation.log
63
        - ctest --output-on-failure 
64
65
66
67
68
    
    
.run_doxygen_template: &run_doxygen_template
    stage: build_and_test
    image: ubuntu:latest
69
70
    except:
        - master
71
    artifacts:
72
        name: "artifact_run_doxygen_${CI_PROJECT_ID}_${CI_COMMIT_REF_SLUG}_${DOX}"
73
74
        expire_in: 1 day
        paths:
75
            - Documentation/Doxygen/${DOXYGEN_OUTPUT_FILE}
76
77
78
79
80
81
82
83
    before_script:
        - apt-get update -y
        - apt-get install -y doxygen graphviz libjs-mathjax

    script:
        - cd Documentation/Doxygen
        - doxygen ${DOX}
    
84
.check_compilation_warning_template_docker: &check_compilation_warning_template_docker
85
    stage: check_warnings
86
87
    except:
        - master
88
89
90
91
92
93
94
95
    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
    
96
97
98
99
100
101
102
103
104
.check_compilation_warning_template_macos: &check_compilation_warning_template_macos
    stage: check_warnings
    except:
        - master
    # dependencies: in the instantiations!
    script:
        - python Scripts/Tools/find_warning_in_compilation_log.py --log build/compilation.log
    allow_failure: true    
    
105
106
    
.check_doxygen_warning_template: &check_doxygen_warning_template
107
    stage: check_warnings    
108
109
    except:
        - master    
110
111
    image: alpine:latest
    artifacts:
112
        name: "artifact_check_warning_doxygen_${CI_PROJECT_ID}_${CI_COMMIT_REF_SLUG}_${DOXYGEN_OUTPUT_FILE}"
113
114
115
116
117
118
119
120
        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:
121
122
123
        - ls
        - ls Documentation/Doxygen
        - ls Documentation/Doxygen/${DOXYGEN_OUTPUT_FILE}
124
125
126
        - python Scripts/Tools/find_warning_in_doxygen_log.py --log Documentation/Doxygen/${DOXYGEN_OUTPUT_FILE}
    allow_failure: true    
    
127
    
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# doxygen_basic:
#   <<: *run_doxygen_template
#   variables:
#       DOX: "basic_dev_guide.dox"
#       DOXYGEN_OUTPUT_FILE: "basic.log"
#
# doxygen_advanced:
#   <<: *run_doxygen_template
#   variables:
#       DOX: "advanced_dev_guide.dox"
#       DOXYGEN_OUTPUT_FILE: "advanced.log"
#
# doxygen_complete:
#   <<: *run_doxygen_template
#   variables:
#       DOX: "complete_dev_guide.dox"
#       DOXYGEN_OUTPUT_FILE: "complete.log"
#
# check_warning_doxygen_basic:
#   <<: *check_doxygen_warning_template
#   dependencies:
#       - doxygen_basic
#   variables:
#       DOXYGEN_OUTPUT_FILE: "basic.log"
#
# check_warning_doxygen_advanced:
#   <<: *check_doxygen_warning_template
#   dependencies:
#       - doxygen_advanced
#   variables:
#       DOXYGEN_OUTPUT_FILE: "advanced.log"
#
# check_warning_doxygen_complete:
#   <<: *check_doxygen_warning_template
#   dependencies:
#       - doxygen_complete
#   variables:
#       DOXYGEN_OUTPUT_FILE: "complete.log"
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
    


# 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
    
189