-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
101 lines (89 loc) · 2.87 KB
/
.gitlab-ci.yml
File metadata and controls
101 lines (89 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
image: heshuby/prepare_build:634fb3b872c5e57b04ed10090553c23a
stages:
- build
- unit-tests
- integration-tests
- analyzers
Build:
stage: build
tags:
- docker
script:
- INSTALL_DIR="/opt"
- SOURCE_DIR="${PWD}"
- BUILD_DIR="${SOURCE_DIR}/build"
- cd "${SOURCE_DIR}/doc"
- md5sum --check "${INSTALL_DIR}/prepare_build.md5" || bash "${SOURCE_DIR}/doc/prepare_build.sh"
- mkdir -p ${BUILD_DIR}
- cmake -DCMAKE_BUILD_TYPE=Release -S ${SOURCE_DIR} -B ${BUILD_DIR}
- cd ${BUILD_DIR} && make -j$(nproc)
artifacts:
paths:
- build
expire_in: 1 week
Code quality:
stage: analyzers
tags:
- docker
script:
- INSTALL_DIR="/opt"
- SOURCE_DIR="${PWD}"
- CLANG_LOG_DIR="${SOURCE_DIR}/clang-tidy-log"
- LOG_DIR="/tmp/logs"
- BUILD_DIR="${SOURCE_DIR}/build"
- cd "${SOURCE_DIR}/doc"
- md5sum --check "${INSTALL_DIR}/prepare_build.md5" || bash "${SOURCE_DIR}/doc/prepare_build.sh"
- mkdir -p ${LOG_DIR}
- rm -rf ${BUILD_DIR}
- mkdir -p ${BUILD_DIR}
- mkdir -p ${CLANG_LOG_DIR}
- chmod +x ${SOURCE_DIR}/cmake/clang-tidy.py
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_CLANG_TIDY="${SOURCE_DIR}/cmake/clang-tidy.py;-header-filter=.*;" -S ${SOURCE_DIR} -B ${BUILD_DIR} > /dev/null 2>&1
- cd ${BUILD_DIR} && make > ${LOG_DIR}/make.log 2>&1 || (cp ${LOG_DIR}/* ${CLANG_LOG_DIR} && exit 1)
- cp ${LOG_DIR}/* ${CLANG_LOG_DIR} && cat ${LOG_DIR}/clang-tidy-output.txt
- test -f "${LOG_DIR}/.error-flag" && exit 1
artifacts:
when: always
paths:
- clang-tidy-log
expire_in: 1 week
Unit tests:
stage: unit-tests
tags:
- docker
script:
- INSTALL_DIR="/opt"
- SOURCE_DIR="${PWD}"
- cd "${SOURCE_DIR}/doc"
- md5sum --check "${INSTALL_DIR}/prepare_build.md5" || bash "${SOURCE_DIR}/doc/prepare_build.sh"
- cd "${SOURCE_DIR}/build/bin/"
- ./run_tests --log_level=test_suite --detect_memory_leaks=1 --build_info
Integration tests:
timeout: 45m
stage: integration-tests
tags:
- docker
script:
- INSTALL_DIR="/opt"
- SOURCE_DIR="${PWD}"
- cd "${SOURCE_DIR}/doc"
- md5sum --check "${INSTALL_DIR}/prepare_build.md5" || bash "${SOURCE_DIR}/doc/prepare_build.sh"
- TEST_DIR="${SOURCE_DIR}/intergation_test_run"
- mkdir ${TEST_DIR}
- cd ${TEST_DIR}
- python3 ${SOURCE_DIR}/test/integration_test/__main__.py -b "${SOURCE_DIR}/build/bin"
artifacts:
when: always
paths:
- intergation_test_run
expire_in: 1 week
Valgrind test:
stage: analyzers
tags:
- docker
script:
- SOURCE_DIR="${PWD}"
- cd "${SOURCE_DIR}/doc"
- md5sum --check "${INSTALL_DIR}/prepare_build.md5" || bash "${SOURCE_DIR}/doc/prepare_build.sh"
- cd "${SOURCE_DIR}/build/bin"
- valgrind --leak-check=full --error-exitcode=1 --show-leak-kinds=all ./run_tests --log_level=test_suite --detect_memory_leaks=1 --build_info