From faeb1c140637ce25209e5553cab6a488c363a912 Mon Sep 17 00:00:00 2001 From: Pierre Tardy Date: Mon, 29 Jan 2018 17:38:46 +0100 Subject: [PATCH] add a Simplified example for streamed artifacts Going through an object adds a lot of complication. Adding example for unzipping on the fly --- docs/gl_objects/builds.py | 12 ++++++++++-- docs/gl_objects/builds.rst | 10 ++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/gl_objects/builds.py b/docs/gl_objects/builds.py index a5d20059a..0f616e842 100644 --- a/docs/gl_objects/builds.py +++ b/docs/gl_objects/builds.py @@ -72,7 +72,7 @@ build_or_job.artifacts() # end artifacts -# stream artifacts +# stream artifacts with class class Foo(object): def __init__(self): self._fd = open('artifacts.zip', 'wb') @@ -83,7 +83,15 @@ def __call__(self, chunk): target = Foo() build_or_job.artifacts(streamed=True, action=target) del(target) # flushes data on disk -# end stream artifacts +# end stream artifacts with class + +# stream artifacts with unzip +zipfn = "___artifacts.zip" +with open(zipfn, "wb") as f: + build_or_job.artifacts(streamed=True, action=f.write) +subprocess.run(["unzip", "-bo", zipfn]) +os.unlink(zipfn) +# end stream artifacts with unzip # keep artifacts build_or_job.keep_artifacts() diff --git a/docs/gl_objects/builds.rst b/docs/gl_objects/builds.rst index b0f3e22f0..9d6873626 100644 --- a/docs/gl_objects/builds.rst +++ b/docs/gl_objects/builds.rst @@ -201,8 +201,14 @@ You can download artifacts as a stream. Provide a callable to handle the stream: .. literalinclude:: builds.py - :start-after: # stream artifacts - :end-before: # end stream artifacts + :start-after: # stream artifacts with class + :end-before: # end stream artifacts with class + +In this second example, you can directly stream the output into a file, and unzip it afterwards: + +.. literalinclude:: builds.py + :start-after: # stream artifacts with unzip + :end-before: # end stream artifacts with unzip Mark a job artifact as kept when expiration is set: