summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Wittig <max.wittig@siemens.com>2019-04-24 15:12:51 +0200
committerGitHub <noreply@github.com>2019-04-24 15:12:51 +0200
commit16de1b03fde3dbbe8f851614dd1d8c09de102fe5 (patch)
treeaeec7492c63936d7a5f1204298b2231db21bdea2
parenta3a771310de16be7bba041c962223f7bda9aa4d6 (diff)
parent8e55a3c85f3537e2be1032bf7d28080a4319ec89 (diff)
downloadgitlab-16de1b03fde3dbbe8f851614dd1d8c09de102fe5.tar.gz
Merge pull request #746 from therealgambo/master
add project releases api
-rw-r--r--docs/gl_objects/projects.rst33
-rw-r--r--gitlab/v4/objects.py12
2 files changed, 45 insertions, 0 deletions
diff --git a/docs/gl_objects/projects.rst b/docs/gl_objects/projects.rst
index b91f5f2..c151889 100644
--- a/docs/gl_objects/projects.rst
+++ b/docs/gl_objects/projects.rst
@@ -663,6 +663,39 @@ Delete project push rules::
pr.delete()
+Project releases
+================
+
+Reference
+---------
+
+* v4 API:
+
+ + :class:`gitlab.v4.objects.ProjectRelease`
+ + :class:`gitlab.v4.objects.ProjectReleaseManager`
+ + :attr:`gitlab.v4.objects.Project.releases`
+
+* Gitlab API: https://docs.gitlab.com/ee/api/releases/index.html
+
+Examples
+--------
+
+Get a list of releases from a project::
+
+ release = project.releases.list()
+
+Get a single release::
+
+ release = project.releases.get('v1.2.3')
+
+Create a release for a project tag::
+
+ release = project.releases.create({'name':'Demo Release', 'tag_name':'v1.2.3', 'description':'release notes go here'})
+
+Delete a release::
+
+ release = p.releases.delete('v1.2.3')
+
Project protected tags
======================
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index 2175e0c..da46e9a 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -1993,6 +1993,17 @@ class ProjectPagesDomainManager(CRUDMixin, RESTManager):
_update_attrs = (tuple(), ('certificate', 'key'))
+class ProjectRelease(RESTObject):
+ _id_attr = 'tag_name'
+
+
+class ProjectReleaseManager(NoUpdateMixin, RESTManager):
+ _path = '/projects/%(project_id)s/releases'
+ _obj_cls = ProjectRelease
+ _from_parent_attrs = {'project_id': 'id'}
+ _create_attrs = (('name', 'tag_name', 'description', ), ('ref', 'assets', ))
+
+
class ProjectTag(ObjectDeleteMixin, RESTObject):
_id_attr = 'name'
_short_print_attr = 'name'
@@ -3273,6 +3284,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject):
('protectedtags', 'ProjectProtectedTagManager'),
('pipelineschedules', 'ProjectPipelineScheduleManager'),
('pushrules', 'ProjectPushRulesManager'),
+ ('releases', 'ProjectReleaseManager'),
('runners', 'ProjectRunnerManager'),
('services', 'ProjectServiceManager'),
('snippets', 'ProjectSnippetManager'),