diff options
author | Max Wittig <max.wittig@siemens.com> | 2019-04-24 15:12:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-24 15:12:51 +0200 |
commit | 16de1b03fde3dbbe8f851614dd1d8c09de102fe5 (patch) | |
tree | aeec7492c63936d7a5f1204298b2231db21bdea2 | |
parent | a3a771310de16be7bba041c962223f7bda9aa4d6 (diff) | |
parent | 8e55a3c85f3537e2be1032bf7d28080a4319ec89 (diff) | |
download | gitlab-16de1b03fde3dbbe8f851614dd1d8c09de102fe5.tar.gz |
Merge pull request #746 from therealgambo/master
add project releases api
-rw-r--r-- | docs/gl_objects/projects.rst | 33 | ||||
-rw-r--r-- | gitlab/v4/objects.py | 12 |
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'), |