diff options
author | Lars Wirzenius <liw@liw.fi> | 2018-07-04 11:19:00 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2018-07-04 11:19:00 +0300 |
commit | ef698946c60dc57a5c6b6e63a441debbf2056895 (patch) | |
tree | 331dd5085a026573e0ac0391d6db9543498dbbb3 /ick2 | |
parent | 48bd18b6d94e5902cd71cd4a914cda7c5e0c988a (diff) | |
download | ick2-ef698946c60dc57a5c6b6e63a441debbf2056895.tar.gz |
Add: optional glob field to "archive: workspace" action
Diffstat (limited to 'ick2')
-rw-r--r-- | ick2/actions.py | 18 |
1 files changed, 17 insertions, 1 deletions
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 |