From ef698946c60dc57a5c6b6e63a441debbf2056895 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 4 Jul 2018 11:19:00 +0300 Subject: Add: optional glob field to "archive: workspace" action --- ick2/actions.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'ick2') diff --git a/ick2/actions.py b/ick2/actions.py index 8c52475..7c968c9 100644 --- a/ick2/actions.py +++ b/ick2/actions.py @@ -15,6 +15,7 @@ import base64 import copy +import glob import json import os import tempfile @@ -265,17 +266,23 @@ class ArchiveWorkspaceAction(Action): # pragma: no cover def execute(self, params, step): env = self.get_env() + dirname = env.get_workspace_directory() blob_name = params.get('artifact_name') if not blob_name: env.report(1, 'No artifact_name parameter\n') return 1 - dirname = env.get_workspace_directory() + globs = step.get('globs') + if globs is None: + names = ['.'] + else: + names = self.match_globs(dirname, globs) url = self.get_blob_upload_url(blob_name) headers = self.get_authz_headers() + self._env.report(None, 'Creating tarball from workspace\n') fd, tarball = tempfile.mkstemp() os.close(fd) tar = ['sudo', 'tar', '-zcf', tarball, '-C', dirname, '.'] @@ -286,6 +293,7 @@ class ArchiveWorkspaceAction(Action): # pragma: no cover return exit_code self._env.report(None, 'tarball generation finished\n') + self._env.report(None, 'Uploading tarball to artifact store\n') curl = ['curl', '-sk', '-T', tarball] + [ '-H{}:{}'.format(name, value) for name, value in headers.items() @@ -296,6 +304,14 @@ class ArchiveWorkspaceAction(Action): # pragma: no cover os.remove(tarball) return exit_code + def match_globs(self, workspace, globs): + names = [] + for pat in globs: + abspat = os.path.join(workspace, './' + pat) + for name in glob.glob(abspat): + names.append(os.path.normpath(name)) + return names + class PopulateActionBase(Action): # pragma: no cover -- cgit v1.2.1