-
Notifications
You must be signed in to change notification settings - Fork 9
405 lines (397 loc) · 19.1 KB
/
run-end-to-end.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
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
name: End-to-end tests
on:
workflow_call:
inputs:
library:
description: "Library to test"
required: true
type: string
scenarios:
description: "JSON array of scenarios to run"
default: "[]"
required: false
type: string
weblogs:
description: "JSON array of weblogs to run"
default: "[]"
required: false
type: string
binaries_artifact:
description: "Artifact name containing the binaries to test"
default: ''
required: false
type: string
ci_environment:
description: "Which CI environment is running the tests, used for FPD"
default: 'custom'
required: false
type: string
build_python_base_images:
description: "Shall we build python base images for tests on python tracer"
default: false
required: false
type: boolean
build_buddies_images:
description: "Shall we build buddies images"
default: false
required: false
type: boolean
build_proxy_image:
description: "Shall we build proxy image"
default: false
required: false
type: boolean
push_to_feature_parity_dashbaord:
description: "Shall we push results to Feature Parity Dashbaord"
default: false
required: false
type: boolean
env:
REGISTRY: ghcr.io
jobs:
end-to-end:
runs-on: ubuntu-latest
strategy:
matrix:
weblog: ${{ fromJson(inputs.weblogs) }}
fail-fast: false
env:
SYSTEM_TESTS_REPORT_ENVIRONMENT: ${{ inputs.ci_environment }}
SYSTEM_TESTS_REPORT_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: 'DataDog/system-tests'
- name: Install runner
uses: ./.github/actions/install_runner
- name: Get binaries artifact
if : ${{ inputs.binaries_artifact != '' }}
uses: actions/download-artifact@v4
with:
name: ${{ inputs.binaries_artifact }}
path: binaries/
- name: Build python's weblog base images
if: inputs.library == 'python' && inputs.build_python_base_images
run: |
./utils/build/build_python_base_images.sh
- name: Build buddies weblog images
if: inputs.build_buddies_images
run: ./utils/build/build_tracer_buddies.sh
- name: Build proxy image
if: inputs.build_proxy_image
run: ./build.sh -i proxy
- name: Pull images
uses: ./.github/actions/pull_images
with:
library: ${{ inputs.library }}
weblog: ${{ matrix.weblog }}
scenarios: ${{ inputs.scenarios }}
- name: Log in to the Container registry
if: ${{ inputs.library == 'ruby' }}
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
- name: Build agent
run: SYSTEM_TEST_BUILD_ATTEMPTS=3 ./build.sh -i agent
- name: Build weblog
id: build
run: SYSTEM_TEST_BUILD_ATTEMPTS=3 ./build.sh ${{ inputs.library }} -i weblog -w ${{ matrix.weblog }}
- name: Run APPSEC_STANDALONE scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_STANDALONE"')
run: ./run.sh APPSEC_STANDALONE
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEFAULT scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEFAULT"')
run: ./run.sh DEFAULT
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run CROSSED_TRACING_LIBRARIES scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"CROSSED_TRACING_LIBRARIES"')
run: ./run.sh CROSSED_TRACING_LIBRARIES
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
AWS_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Run PROFILING scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"PROFILING"')
run: ./run.sh PROFILING
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TRACE_PROPAGATION_STYLE_W3C scenario
if: always() && steps.build.outcome == 'success' && inputs.library != 'python' && contains(inputs.scenarios, '"TRACE_PROPAGATION_STYLE_W3C"')
run: ./run.sh TRACE_PROPAGATION_STYLE_W3C
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run INTEGRATIONS scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"INTEGRATIONS"')
run: ./run.sh INTEGRATIONS
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
AWS_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Run APM_TRACING_E2E_OTEL scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APM_TRACING_E2E_OTEL"')
run: ./run.sh APM_TRACING_E2E_OTEL
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
DD_APPLICATION_KEY: ${{ secrets.DD_APPLICATION_KEY }}
DD_APP_KEY: ${{ secrets.DD_APPLICATION_KEY }}
- name: Run LIBRARY_CONF_CUSTOM_HEADER_TAGS scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"LIBRARY_CONF_CUSTOM_HEADER_TAGS"')
run: ./run.sh LIBRARY_CONF_CUSTOM_HEADER_TAGS
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run LIBRARY_CONF_CUSTOM_HEADER_TAGS_INVALID scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"LIBRARY_CONF_CUSTOM_HEADER_TAGS_INVALID"')
run: ./run.sh LIBRARY_CONF_CUSTOM_HEADER_TAGS_INVALID
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TRACING_CONFIG_NONDEFAULT scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TRACING_CONFIG_NONDEFAULT"')
run: ./run.sh TRACING_CONFIG_NONDEFAULT
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TRACING_CONFIG_NONDEFAULT_2 scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TRACING_CONFIG_NONDEFAULT_2"')
run: ./run.sh TRACING_CONFIG_NONDEFAULT_2
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TRACING_CONFIG_NONDEFAULT_3 scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TRACING_CONFIG_NONDEFAULT_3"')
run: ./run.sh TRACING_CONFIG_NONDEFAULT_3
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run REMOTE_CONFIG_MOCKED_BACKEND_ASM_FEATURES scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"REMOTE_CONFIG_MOCKED_BACKEND_ASM_FEATURES"')
run: ./run.sh REMOTE_CONFIG_MOCKED_BACKEND_ASM_FEATURES
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run REMOTE_CONFIG_MOCKED_BACKEND_LIVE_DEBUGGING scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"REMOTE_CONFIG_MOCKED_BACKEND_LIVE_DEBUGGING"')
run: ./run.sh REMOTE_CONFIG_MOCKED_BACKEND_LIVE_DEBUGGING
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run REMOTE_CONFIG_MOCKED_BACKEND_ASM_DD scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"REMOTE_CONFIG_MOCKED_BACKEND_ASM_DD"')
run: ./run.sh REMOTE_CONFIG_MOCKED_BACKEND_ASM_DD
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run REMOTE_CONFIG_MOCKED_BACKEND_ASM_FEATURES_NOCACHE scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"REMOTE_CONFIG_MOCKED_BACKEND_ASM_FEATURES_NOCACHE"')
run: ./run.sh REMOTE_CONFIG_MOCKED_BACKEND_ASM_FEATURES_NOCACHE
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run REMOTE_CONFIG_MOCKED_BACKEND_LIVE_DEBUGGING_NOCACHE scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"REMOTE_CONFIG_MOCKED_BACKEND_LIVE_DEBUGGING_NOCACHE"')
run: ./run.sh REMOTE_CONFIG_MOCKED_BACKEND_LIVE_DEBUGGING_NOCACHE
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run REMOTE_CONFIG_MOCKED_BACKEND_ASM_DD_NOCACHE scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"REMOTE_CONFIG_MOCKED_BACKEND_ASM_DD_NOCACHE"')
run: ./run.sh REMOTE_CONFIG_MOCKED_BACKEND_ASM_DD_NOCACHE
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_MISSING_RULES scenario
# C++ 1.2.0 freeze when the rules file is missing
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_MISSING_RULES"') && inputs.library != 'cpp'
run: ./run.sh APPSEC_MISSING_RULES
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_CUSTOM_RULES scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_CUSTOM_RULES"')
run: ./run.sh APPSEC_CUSTOM_RULES
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_CORRUPTED_RULES scenario
# C++ 1.2.0 freeze when the rules file is missing
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_CORRUPTED_RULES"') && inputs.library != 'cpp'
run: ./run.sh APPSEC_CORRUPTED_RULES
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_RULES_MONITORING_WITH_ERRORS scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_RULES_MONITORING_WITH_ERRORS"')
run: ./run.sh APPSEC_RULES_MONITORING_WITH_ERRORS
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_BLOCKING scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_BLOCKING"')
run: ./run.sh APPSEC_BLOCKING
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run EVERYTHING_DISABLED scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"EVERYTHING_DISABLED"')
run: ./run.sh EVERYTHING_DISABLED
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_LOW_WAF_TIMEOUT scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_LOW_WAF_TIMEOUT"')
run: ./run.sh APPSEC_LOW_WAF_TIMEOUT
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_CUSTOM_OBFUSCATION scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_CUSTOM_OBFUSCATION"')
run: ./run.sh APPSEC_CUSTOM_OBFUSCATION
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_RATE_LIMITER scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_RATE_LIMITER"')
run: ./run.sh APPSEC_RATE_LIMITER
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_BLOCKING_FULL_DENYLIST scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_BLOCKING_FULL_DENYLIST"')
run: ./run.sh APPSEC_BLOCKING_FULL_DENYLIST
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_REQUEST_BLOCKING scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_REQUEST_BLOCKING"')
run: ./run.sh APPSEC_REQUEST_BLOCKING
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_RUNTIME_ACTIVATION scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_RUNTIME_ACTIVATION"')
run: ./run.sh APPSEC_RUNTIME_ACTIVATION
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_WAF_TELEMETRY scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_WAF_TELEMETRY"')
run: ./run.sh APPSEC_WAF_TELEMETRY
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_API_SECURITY scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_API_SECURITY"')
run: ./run.sh APPSEC_API_SECURITY
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_API_SECURITY_RC scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_API_SECURITY_RC"')
run: ./run.sh APPSEC_API_SECURITY_RC
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_API_SECURITY_NO_RESPONSE_BODY scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_API_SECURITY_NO_RESPONSE_BODY"')
run: ./run.sh APPSEC_API_SECURITY_NO_RESPONSE_BODY
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_API_SECURITY_WITH_SAMPLING scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_API_SECURITY_WITH_SAMPLING"')
run: |
./run.sh APPSEC_API_SECURITY_WITH_SAMPLING
cat ./logs_appsec_api_security_with_sampling/tests.log 2>/dev/null | grep "API SECURITY" || true
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_AUTO_EVENTS_EXTENDED scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_AUTO_EVENTS_EXTENDED"')
run: ./run.sh APPSEC_AUTO_EVENTS_EXTENDED
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_AUTO_EVENTS_RC scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_AUTO_EVENTS_RC"')
run: ./run.sh APPSEC_AUTO_EVENTS_RC
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run APPSEC_RASP scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_RASP"')
run: ./run.sh APPSEC_RASP
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run SAMPLING scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"SAMPLING"')
run: ./run.sh SAMPLING
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TELEMETRY_APP_STARTED_PRODUCTS_DISABLED scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TELEMETRY_APP_STARTED_PRODUCTS_DISABLED"')
run: ./run.sh TELEMETRY_APP_STARTED_PRODUCTS_DISABLED
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TELEMETRY_LOG_GENERATION_DISABLED scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TELEMETRY_LOG_GENERATION_DISABLED"')
run: ./run.sh TELEMETRY_LOG_GENERATION_DISABLED
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TELEMETRY_METRIC_GENERATION_DISABLED scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TELEMETRY_METRIC_GENERATION_DISABLED"')
run: ./run.sh TELEMETRY_METRIC_GENERATION_DISABLED
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TELEMETRY_METRIC_GENERATION_ENABLED scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TELEMETRY_METRIC_GENERATION_ENABLED"')
run: ./run.sh TELEMETRY_METRIC_GENERATION_ENABLED
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run TELEMETRY_DEPENDENCY_LOADED_TEST_FOR_DEPENDENCY_COLLECTION_DISABLED scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"TELEMETRY_DEPENDENCY_LOADED_TEST_FOR_DEPENDENCY_COLLECTION_DISABLED"')
run: ./run.sh TELEMETRY_DEPENDENCY_LOADED_TEST_FOR_DEPENDENCY_COLLECTION_DISABLED
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEBUGGER_PROBES_STATUS scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEBUGGER_PROBES_STATUS"')
run: ./run.sh DEBUGGER_PROBES_STATUS
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEBUGGER_METHOD_PROBES_SNAPSHOT scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEBUGGER_METHOD_PROBES_SNAPSHOT"')
run: ./run.sh DEBUGGER_METHOD_PROBES_SNAPSHOT
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEBUGGER_LINE_PROBES_SNAPSHOT scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEBUGGER_LINE_PROBES_SNAPSHOT"')
run: ./run.sh DEBUGGER_LINE_PROBES_SNAPSHOT
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEBUGGER_MIX_LOG_PROBE scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEBUGGER_MIX_LOG_PROBE"')
run: ./run.sh DEBUGGER_MIX_LOG_PROBE
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEBUGGER_PII_REDACTION scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEBUGGER_PII_REDACTION"')
run: ./run.sh DEBUGGER_PII_REDACTION
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEBUGGER_EXPRESSION_LANGUAGE scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEBUGGER_EXPRESSION_LANGUAGE"')
run: ./run.sh DEBUGGER_EXPRESSION_LANGUAGE
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run DEBUGGER_EXCEPTION_REPLAY scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"DEBUGGER_EXCEPTION_REPLAY"')
run: ./run.sh DEBUGGER_EXCEPTION_REPLAY
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- name: Run all scenarios in replay mode
run: utils/scripts/replay_scenarios.sh
env:
DD_API_KEY: ${{ secrets.DD_API_KEY }}
DD_APPLICATION_KEY: ${{ secrets.DD_APPLICATION_KEY }}
DD_APP_KEY: ${{ secrets.DD_APPLICATION_KEY }}
- name: Compress logs
id: compress_logs
if: always() && steps.build.outcome == 'success'
run: tar -czvf artifact.tar.gz $(ls | grep logs)
- name: Upload artifact
if: always() && steps.compress_logs.outcome == 'success'
uses: actions/upload-artifact@v4
with:
# log name convention to respect : logs_$SCENARIO-FAMILY_$LIBRARY_$WEBLOG_$CI-ENVIRONMENT
name: logs_endtoend_${{ inputs.library }}_${{ matrix.weblog }}_${{ inputs.ci_environment }}
path: artifact.tar.gz
- name: Push results to Feature Parity Dashboard
if: ${{ inputs.push_to_feature_parity_dashbaord && false }} # disabled for now
run: |
for folder in logs*/ ; do
curl -X POST ${FP_IMPORT_URL} \
--fail
--header "Content-Type: application/json" \
--header "FP_API_KEY: ${FP_API_KEY}" \
--data "@./${folder}feature_parity.json" \
--include
done
env:
FP_API_KEY: ${{ secrets.FP_API_KEY }}
FP_IMPORT_URL: ${{ secrets.FP_IMPORT_URL }}