-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathconfig.yml
306 lines (286 loc) · 8.7 KB
/
config.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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
version: 2
# This file uses YAML anchors to deduplicate steps
# see https://circleci.com/blog/circleci-hacks-reuse-yaml-in-your-circleci-config-with-yaml/
# and https://learnxinyminutes.com/docs/yaml/
experimental:
# For some reason filtering out notifications keeps being undocumented and
# marked as experimental but as of today, it's still working.
notify:
branches:
only:
- main
templates:
job_template: &job_template
docker:
- image: datadog/datadog-agent-runner-circle:go1176
environment:
USE_SYSTEM_LIBS: "1"
working_directory: /go/src/github.com/DataDog/datadog-agent
step_templates:
- restore_cache: &restore_deps
keys:
# The first match will be used. Doing that so new branches
# use the default branch's cache but don't pollute it back.
#
# If incremental dep fails, increase the cache gen number
# in restore_deps AND save_deps
# See https://github.com/DataDog/datadog-agent/pull/2384
- gen19-godeps-{{ checksum "requirements.txt" }}-{{ checksum ".circleci/requirements.txt" }}-{{ .Branch }}-{{ .Revision }}
- gen19-godeps-{{ checksum "requirements.txt" }}-{{ checksum ".circleci/requirements.txt" }}-{{ .Branch }}-
- gen19-godeps-{{ checksum "requirements.txt" }}-{{ checksum ".circleci/requirements.txt" }}-main-
- save_cache: &save_deps
key: gen19-godeps-{{ checksum "requirements.txt" }}-{{ checksum ".circleci/requirements.txt" }}-{{ .Branch }}-{{ .Revision }}
- restore_cache: &restore_source
keys:
# Cache retrieval is faster than full git checkout
- v5-repo-{{ .Revision }}
- save_cache: &save_source
key: v5-repo-{{ .Revision }}
jobs:
checkout_code:
docker:
- image: alpine/git:latest
working_directory: /go/src/github.com/DataDog/datadog-agent
steps:
- checkout
- save_cache:
<<: *save_source
paths:
- /go/src/github.com/DataDog/datadog-agent
dependencies:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: setup python deps
command: |
python3 -m pip install wheel
python3 -m pip install -r requirements.txt
python3 -m pip install -r .circleci/requirements.txt
- run:
name: grab go deps
command: |
inv -e deps
- run:
name: build rtloader
command: |
inv rtloader.make --install-prefix=/go/src/github.com/DataDog/datadog-agent/dev
inv rtloader.install
- run:
name: lint rtloader
command: |
inv rtloader.format --raise-if-changed
- run:
name: test rtloader
command: |
inv rtloader.test
- run:
name: install go tooling
command: |
inv -e install-tools
- save_cache:
<<: *save_deps
paths:
- /go/pkg/mod
- /go/bin
- /go/src/github.com/DataDog/datadog-agent/dev
- /usr/local/lib/python3.6/dist-packages
- /usr/local/bin
unit_tests:
<<: *job_template
resource_class: large
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: run unit tests
command: inv -e test --rerun-fails=2 --python-runtimes 3 --coverage --race --profile --fail-on-fmt --cpus 3
- run:
name: upload code coverage results
# Never fail on coverage upload
command: codecov -f profile.cov -F linux || true
integration_tests:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- setup_remote_docker
- run:
name: run integration tests
command: inv -e integration-tests --race --remote-docker
release_note:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
command: inv -e lint-releasenote
name: run PR check for release note
team_label:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
command: inv -e lint-teamassignment
name: run PR check for team assignment labels
milestone:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
command: inv -e lint-milestone
name: run PR check for milestone assignment
licenses_linting:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: run license linting
command: inv -e lint-licenses
filename_linting:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: run filename linting
command: inv -e lint-filenames
shell_linting:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: Install shellcheck
command: inv -e install-shellcheck
- run:
name: Print shellcheck version
command: shellcheck --version
- run:
name: Run shellcheck
#Excludes:
#SC2028: echo may not expand escape sequences. Use printf.
#SC2059: Don't use variables in the printf format string. Use printf "..%s.." "$foo".
command: shellcheck --severity=info -e SC2059 -e SC2028 --shell=bash ./cmd/**/*.sh ./omnibus/package-scripts/*/*
python_linting:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: setting env vars for click
command: |
echo 'export LC_ALL="C.UTF-8"' >> $BASH_ENV
echo 'export LANG="C.UTF-8"' >> $BASH_ENV
- run:
name: lint python files
command: inv -e lint-python
docker_tests:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- setup_remote_docker
- run:
name: run docker image tests
command: inv -e docker.test
- run:
name: run docker image integration tests
command: inv -e docker.integration-tests
build_binaries:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: build dogstatsd
command: inv -e dogstatsd.build --static
- run:
name: build agent
command: inv -e agent.build --exclude-rtloader
build_iot_agent:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: build iot agent
command: inv -e agent.build --flavor iot
- run:
name: test iot agent
command: ./bin/agent/agent -c ./bin/agent/dist check cpu
documentation_generation:
<<: *job_template
steps:
- restore_cache: *restore_source
- restore_cache: *restore_deps
- run:
name: generate doxygen documentation
command: inv -e rtloader.generate-doc
workflows:
version: 2
test_and_build:
jobs:
- checkout_code
- dependencies:
requires:
- checkout_code
- unit_tests:
requires:
- dependencies
- integration_tests:
requires:
- dependencies
- release_note:
filters:
branches:
ignore:
- main
requires:
- dependencies
- team_label:
filters:
branches:
ignore:
- main
requires:
- dependencies
- milestone:
filters:
branches:
ignore:
- main
requires:
- dependencies
- licenses_linting:
requires:
- dependencies
- filename_linting:
requires:
- dependencies
- shell_linting:
requires:
- dependencies
- python_linting:
requires:
- dependencies
- docker_tests:
requires:
- dependencies
- documentation_generation:
requires:
- dependencies
- build_binaries:
requires:
- unit_tests
- integration_tests
- docker_tests
- build_iot_agent:
requires:
- unit_tests
- integration_tests
- docker_tests