2
2
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
3
#
4
4
from abc import ABC
5
- from typing import Any , ClassVar , List , Optional , Tuple
5
+ from datetime import datetime
6
+ from typing import Any , ClassVar , List , Optional , Tuple , cast
6
7
7
8
import pipelines .dagger .actions .system .docker
8
9
from dagger import CacheSharingMode , CacheVolume , Container , ExecError
@@ -220,20 +221,26 @@ async def _collect_test_logs(self, gradle_container: Container) -> Optional[Arti
220
221
The docs in the container are expected to be in build/test-logs, and will end up test-artifact directory by default
221
222
One can change the destination directory by setting the outputs
222
223
"""
223
- test_logs_dir_name = "test-logs"
224
- if test_logs_dir_name not in await gradle_container .directory (f"{ self .context .connector .code_directory } /build" ).entries ():
225
- self .context .logger .warn (f"No { test_logs_dir_name } found directory in the build folder" )
224
+ test_logs_dir_name_in_container = "test-logs"
225
+ test_logs_dir_name_in_zip = f"test-logs-{ datetime .fromtimestamp (cast (float , self .context .pipeline_start_timestamp )).isoformat ()} -{ self .context .git_branch } -{ self .gradle_task_name } " .replace (
226
+ "/" , "_"
227
+ )
228
+ if (
229
+ test_logs_dir_name_in_container
230
+ not in await gradle_container .directory (f"{ self .context .connector .code_directory } /build" ).entries ()
231
+ ):
232
+ self .context .logger .warn (f"No { test_logs_dir_name_in_container } found directory in the build folder" )
226
233
return None
227
234
try :
228
235
zip_file = await (
229
236
dagger_directory_as_zip_file (
230
237
self .dagger_client ,
231
- await gradle_container .directory (f"{ self .context .connector .code_directory } /build/{ test_logs_dir_name } " ),
232
- test_logs_dir_name ,
238
+ await gradle_container .directory (f"{ self .context .connector .code_directory } /build/{ test_logs_dir_name_in_container } " ),
239
+ test_logs_dir_name_in_zip ,
233
240
)
234
241
)
235
242
return Artifact (
236
- name = "test-logs .zip" ,
243
+ name = f" { test_logs_dir_name_in_zip } .zip" ,
237
244
content = zip_file ,
238
245
content_type = "application/zip" ,
239
246
to_upload = True ,
@@ -249,20 +256,26 @@ async def _collect_test_results(self, gradle_container: Container) -> Optional[A
249
256
Only the XML files generated by junit are downloaded into the host filesystem
250
257
One can change the destination directory by setting the outputs
251
258
"""
252
- test_results_dir_name = "test-results"
253
- if test_results_dir_name not in await gradle_container .directory (f"{ self .context .connector .code_directory } /build" ).entries ():
254
- self .context .logger .warn (f"No { test_results_dir_name } found directory in the build folder" )
259
+ test_results_dir_name_in_container = "test-results"
260
+ test_results_dir_name_in_zip = f"test-results-{ datetime .fromtimestamp (cast (float , self .context .pipeline_start_timestamp )).isoformat ()} -{ self .context .git_branch } -{ self .gradle_task_name } " .replace (
261
+ "/" , "_"
262
+ )
263
+ if (
264
+ test_results_dir_name_in_container
265
+ not in await gradle_container .directory (f"{ self .context .connector .code_directory } /build" ).entries ()
266
+ ):
267
+ self .context .logger .warn (f"No { test_results_dir_name_in_container } found directory in the build folder" )
255
268
return None
256
269
try :
257
270
zip_file = await (
258
271
dagger_directory_as_zip_file (
259
272
self .dagger_client ,
260
- await gradle_container .directory (f"{ self .context .connector .code_directory } /build/{ test_results_dir_name } " ),
261
- test_results_dir_name ,
273
+ await gradle_container .directory (f"{ self .context .connector .code_directory } /build/{ test_results_dir_name_in_container } " ),
274
+ test_results_dir_name_in_zip ,
262
275
)
263
276
)
264
277
return Artifact (
265
- name = "test-results .zip" ,
278
+ name = f" { test_results_dir_name_in_zip } .zip" ,
266
279
content = zip_file ,
267
280
content_type = "application/zip" ,
268
281
to_upload = True ,
0 commit comments