diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2016-06-07 21:39:15 +0200 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2016-06-07 21:39:15 +0200 |
commit | b3e0974451b49ab64866dc131bff59e5471ea620 (patch) | |
tree | 4d1408496b407d00a3bc86e9a9ca0612e00fb779 | |
parent | 422b163075189eca466077c7320b466ab39f331e (diff) | |
download | gitlab-issue-122.tar.gz |
Add support for build artifacts and traceissue-122
Fixes #122
-rw-r--r-- | gitlab/cli.py | 18 | ||||
-rw-r--r-- | gitlab/objects.py | 34 |
2 files changed, 49 insertions, 3 deletions
diff --git a/gitlab/cli.py b/gitlab/cli.py index 181cc56..bbd2ac4 100644 --- a/gitlab/cli.py +++ b/gitlab/cli.py @@ -36,7 +36,9 @@ EXTRA_ACTIONS = { gitlab.ProjectBranch: {'protect': {'required': ['id', 'project-id']}, 'unprotect': {'required': ['id', 'project-id']}}, gitlab.ProjectBuild: {'cancel': {'required': ['id', 'project-id']}, - 'retry': {'required': ['id', 'project-id']}}, + 'retry': {'required': ['id', 'project-id']}, + 'artifacts': {'required': ['id', 'project-id']}, + 'trace': {'required': ['id', 'project-id']}}, gitlab.ProjectCommit: {'diff': {'required': ['id', 'project-id']}, 'blob': {'required': ['id', 'project-id', 'filepath']}, @@ -250,6 +252,20 @@ class GitlabCLI(object): except Exception as e: _die("Impossible to retry project build (%s)" % str(e)) + def do_project_build_artifacts(self, cls, gl, what, args): + try: + o = self.do_get(cls, gl, what, args) + return o.artifacts() + except Exception as e: + _die("Impossible to get project build artifacts (%s)" % str(e)) + + def do_project_build_trace(self, cls, gl, what, args): + try: + o = self.do_get(cls, gl, what, args) + return o.trace() + except Exception as e: + _die("Impossible to get project build trace (%s)" % str(e)) + def do_project_issue_subscribe(self, cls, gl, what, args): try: o = self.do_get(cls, gl, what, args) diff --git a/gitlab/objects.py b/gitlab/objects.py index 313ed96..e522acc 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -806,18 +806,48 @@ class ProjectBuild(GitlabObject): canUpdate = False canCreate = False - def cancel(self): + def cancel(self, **kwargs): """Cancel the build.""" url = '/projects/%s/builds/%s/cancel' % (self.project_id, self.id) r = self.gitlab._raw_post(url) raise_error_from_response(r, GitlabBuildCancelError, 201) - def retry(self): + def retry(self, **kwargs): """Retry the build.""" url = '/projects/%s/builds/%s/retry' % (self.project_id, self.id) r = self.gitlab._raw_post(url) raise_error_from_response(r, GitlabBuildRetryError, 201) + def artifacts(self, **kwargs): + """Get the build artifacts. + + Returns: + str: The artifacts. + + Raises: + GitlabConnectionError: If the server cannot be reached. + GitlabGetError: If the artifacts are not available. + """ + url = '/projects/%s/builds/%s/artifacts' % (self.project_id, self.id) + r = self.gitlab._raw_get(url) + raise_error_from_response(r, GitlabGetError, 200) + return r.content + + def trace(self, **kwargs): + """Get the build trace. + + Returns: + str: The trace. + + Raises: + GitlabConnectionError: If the server cannot be reached. + GitlabGetError: If the trace is not available. + """ + url = '/projects/%s/builds/%s/trace' % (self.project_id, self.id) + r = self.gitlab._raw_get(url) + raise_error_from_response(r, GitlabGetError, 200) + return r.content + class ProjectBuildManager(BaseManager): obj_cls = ProjectBuild |