From c2f45e90a52cb418665c65258628d382e0725401 Mon Sep 17 00:00:00 2001 From: Jonathon Reinhart Date: Sun, 2 Oct 2016 10:30:39 -0400 Subject: [PATCH 1/2] Add ProjectBuild.erase() We can't use the existing delete() functionality, because GitLab uses `POST /projects/:id/builds/:build_id/erase` to erase a build. Instead of overriding delete(), we add a separate erase() method to keep the naming consistent, and allow potentially more fine-grained operations in the future. - https://docs.gitlab.com/ce/api/builds.html#erase-a-build --- gitlab/exceptions.py | 4 ++++ gitlab/objects.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/gitlab/exceptions.py b/gitlab/exceptions.py index 7b0f7f006..0fc8617e5 100644 --- a/gitlab/exceptions.py +++ b/gitlab/exceptions.py @@ -95,6 +95,10 @@ class GitlabBuildRetryError(GitlabRetryError): pass +class GitlabBuildEraseError(GitlabRetryError): + pass + + class GitlabPipelineRetryError(GitlabRetryError): pass diff --git a/gitlab/objects.py b/gitlab/objects.py index 882163350..2609e1b7d 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -961,6 +961,12 @@ def retry(self, **kwargs): r = self.gitlab._raw_post(url) raise_error_from_response(r, GitlabBuildRetryError, 201) + def erase(self, **kwargs): + """Erase the build (remove build artifacts and trace).""" + url = '/projects/%s/builds/%s/erase' % (self.project_id, self.id) + r = self.gitlab._raw_post(url) + raise_error_from_response(r, GitlabBuildEraseError, 201) + def keep_artifacts(self, **kwargs): """Prevent artifacts from being delete when expiration is set. From 3b3930b5525e7ea46afc271949f52d02adc6b5ce Mon Sep 17 00:00:00 2001 From: Jonathon Reinhart Date: Sun, 2 Oct 2016 10:50:41 -0400 Subject: [PATCH 2/2] Update docs to use ProjectBuild.erase() --- docs/gl_objects/builds.py | 10 +++------- docs/gl_objects/builds.rst | 6 +++--- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/docs/gl_objects/builds.py b/docs/gl_objects/builds.py index b0d7ea2c7..d73ddd566 100644 --- a/docs/gl_objects/builds.py +++ b/docs/gl_objects/builds.py @@ -103,10 +103,6 @@ def __call__(self, chunk): build.retry() # end retry -# delete -gl.project_builds.delete(build_id, project_id=1) -# or -project.builds.delete(build_id) -# or -build.delete() -# end delete +# erase +build.erase() +# end erase diff --git a/docs/gl_objects/builds.rst b/docs/gl_objects/builds.rst index 1c4c525ad..e4c12583d 100644 --- a/docs/gl_objects/builds.rst +++ b/docs/gl_objects/builds.rst @@ -150,8 +150,8 @@ Cancel/retry a build: :start-after: # retry :end-before: # end retry -Erase a build: +Erase a build (artifacts and trace): .. literalinclude:: builds.py - :start-after: # delete - :end-before: # end delete + :start-after: # erase + :end-before: # end erase