common.yml 5.89 KB
Newer Older
1
stages:
2
3
    - build_and_test
    - check_warnings
4

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

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

    script:
        - cd Documentation/Doxygen
        - doxygen ${DOX}
    
82
.check_compilation_warning_template_docker: &check_compilation_warning_template_docker
83
    stage: check_warnings
84
85
    except:
        - master
86
87
88
89
90
91
92
93
    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
    
94
95
96
97
98
99
100
101
102
.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    
    
103
104
    
.check_doxygen_warning_template: &check_doxygen_warning_template
105
    stage: check_warnings    
106
107
    except:
        - master    
108
109
    image: alpine:latest
    artifacts:
110
        name: "artifact_check_warning_doxygen_${CI_PROJECT_ID}_${CI_COMMIT_REF_SLUG}_${DOXYGEN_OUTPUT_FILE}"
111
112
113
114
115
116
117
118
        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:
119
120
121
        - ls
        - ls Documentation/Doxygen
        - ls Documentation/Doxygen/${DOXYGEN_OUTPUT_FILE}
122
123
124
        - python Scripts/Tools/find_warning_in_doxygen_log.py --log Documentation/Doxygen/${DOXYGEN_OUTPUT_FILE}
    allow_failure: true    
    
125
    
126
doxygen_basic:
127
128
129
130
131
  <<: *run_doxygen_template
  variables:
      DOX: "basic_dev_guide.dox"
      DOXYGEN_OUTPUT_FILE: "basic.log"    

132
doxygen_advanced:
133
134
135
136
  <<: *run_doxygen_template
  variables:
      DOX: "advanced_dev_guide.dox"
      DOXYGEN_OUTPUT_FILE: "advanced.log"    
137

138
doxygen_complete:
139
140
141
  <<: *run_doxygen_template
  variables:
      DOX: "complete_dev_guide.dox"
142
      DOXYGEN_OUTPUT_FILE: "complete.log"
143
      
144
check_warning_doxygen_basic:
145
146
  <<: *check_doxygen_warning_template
  dependencies: 
147
      - doxygen_basic
148
149
150
  variables:
      DOXYGEN_OUTPUT_FILE: "basic.log"

151
check_warning_doxygen_advanced:
152
153
  <<: *check_doxygen_warning_template
  dependencies: 
154
      - doxygen_advanced
155
156
  variables:
      DOXYGEN_OUTPUT_FILE: "advanced.log"
157

158
check_warning_doxygen_complete:
159
160
  <<: *check_doxygen_warning_template
  dependencies: 
161
      - doxygen_complete
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
  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
    
187