-
Notifications
You must be signed in to change notification settings - Fork 14
/
.gitlab-ci.yml
146 lines (138 loc) · 4.53 KB
/
.gitlab-ci.yml
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# ------------
# Docker Image
# ------------
include:
- template: Code-Quality.gitlab-ci.yml
- template: SAST.gitlab-ci.yml
# ------------
# Various Jobs
# ------------
stages:
- check
- build
- test
- deploy
# ------------
# Stage: check
# ------------
clang-format:
stage: check
image: ubuntu:20.04
before_script:
- apt-get update && apt-get install -y clang-format
script:
- find . -regex '.*\.\(ino\|cpp\|hpp\|cc\|cxx\|h\)' -exec cat {} \; | diff -u <(find . -regex '.*\.\(ino\|cpp\|hpp\|cc\|cxx\|h\)' -exec clang-format -style=file {} -verbose \;) -
buildifier:
stage: check
image: ubuntu:20.04
before_script:
- apt-get update && apt-get install -y wget
- wget https://github.com/bazelbuild/buildtools/releases/download/3.5.0/buildifier
- chmod +x buildifier
- mv buildifier /usr/bin
script:
- buildifier -v -d -r .
cppcheck:
stage: check
image: ubuntu:20.04
before_script:
- apt-get update && apt-get install -y cppcheck python python-pygments
script:
- cppcheck --template=gcc --enable=all --inconclusive --std=c++14 -I spleeter/**/*.h spleeter/**/*.cpp > static_code_analysis.log
- cppcheck --template=gcc --enable=all --inconclusive --std=c++14 -I spleeter/**/*.h spleeter/**/*.cpp --xml 2> static_code_analysis.xml
- cppcheck-htmlreport --file=static_code_analysis.xml --report-dir=static_code_analysis_report --source-dir=.
artifacts:
name: static_code_analysis
paths:
- static_code_analysis_report/
- static_code_analysis.xml
- static_code_analysis.log
expire_in: 7 days
# ------------
# Stage: Build
# ------------
bazel-build-and-test:
stage: build
image: registry.gitlab.com/jinay1991/spleeter
script:
- bazel build //...
- bazel test //... --test_output=all
after_script:
- apt-get update && apt-get install -y wget
- wget https://github.com/drazisil/junit-merge/releases/download/v2.0.0/junit-merge-linux
- chmod +x junit-merge-linux
- mv junit-merge-linux /usr/bin
- junit-merge-linux $(find bazel-out/* -name test.xml) --out merged_test_report.xml
artifacts:
when: always
reports:
junit: merged_test_report.xml
doxygen:
stage: build
image: ubuntu:20.04
needs: []
before_script:
- apt-get update && apt-get install -y doxygen graphviz plantuml
script:
- echo "Generating Doxygen Documentation"
- doxygen Doxyfile
artifacts:
paths:
- doc
expire_in: 1 day
only:
refs:
- master
# ------------
# Stage: Test
# ------------
code-coverage:
stage: test
image: ubuntu:20.04
dependencies:
- bazel-build-and-test
before_script:
- export DEBIAN_FRONTEND=noninteractive
- apt-get update && apt-get install -y build-essential curl git libtool lcov
- curl https://bazel.build/bazel-release.pub.gpg | apt-key add -
- echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
- apt-get update && apt-get install -y bazel
- apt-get update && apt-get install -y openjdk-11-jdk openjdk-11-jre
- apt-get update && apt-get install -y libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libswresample-dev libswscale-dev ffmpeg
script:
- bazel coverage -s --combined_report=lcov --instrumentation_filter=//... --coverage_report_generator=@bazel_tools//tools/test:coverage_report_generator //...
after_script:
- export OUTPUT_DIR=$(bazel info execution_root)
- export COVERAGE_INFO=$(find $OUTPUT_DIR -name coverage.dat)
- genhtml -s --num-spaces 4 --legend --highlight --sort -t "Code Coverage" --demangle-cpp --function-coverage --branch-coverage -o coverage $COVERAGE_INFO
coverage: /functions.*:\s(\d+.\d+%)/
allow_failure: true
artifacts:
paths:
- coverage/
name: code-coverage
when: on_success
expire_in: 1 day
only:
refs:
- master
pages:
stage: deploy
image: ubuntu:20.04
needs:
- code-coverage
- cppcheck
- doxygen
script:
- mkdir -p reports
- echo "<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Spleeter</title> </head> <body> <ul> <li><a href="coverage/">Code Coverage Report</a></li> <li><a href="static_code_analysis_report/">Static Code Analysis Report</a></li> <li><a href="doc/html">Doxygen Documentation</a></li> </ul> </body> </html>" > reports/index.html
- mv coverage reports/coverage
- mv static_code_analysis_report/ reports/static_code_analysis_report
- mv doc/ reports/doc
- mv reports/ public
artifacts:
paths:
- public
only:
refs:
- master