summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2016-06-19 19:38:03 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2016-06-19 19:38:03 +0200
commit2e0ac3fa4a66a63921b2aeee81dcc942a0849985 (patch)
treefa40110d8bae77bd53d240e8f36fa9bcf5a0ba19
parentc85276a6e6c5088ea6f2ecb13059488c9779ea2c (diff)
parent80a190888028db4eb1df0c4f827938e89b20f8a1 (diff)
downloadgitlab-2e0ac3fa4a66a63921b2aeee81dcc942a0849985.tar.gz
Merge branch 'master' of github.com:gpocentek/python-gitlab
-rw-r--r--gitlab/cli.py18
-rw-r--r--gitlab/objects.py34
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 41b8295..83569a0 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -822,18 +822,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