Skip to content

Commit 8d7faf4

Browse files
author
Gauvain Pocentek
committed
Add support for project deployments
1 parent 40db4cd commit 8d7faf4

File tree

5 files changed

+50
-0
lines changed

5 files changed

+50
-0
lines changed

docs/api-objects.rst

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ API objects manipulation
1010
gl_objects/builds
1111
gl_objects/commits
1212
gl_objects/deploy_keys
13+
gl_objects/deployments
1314
gl_objects/environments
1415
gl_objects/groups
1516
gl_objects/issues

docs/gl_objects/deployments.py

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# list
2+
deployments = gl.project_deployments.list(project_id=1)
3+
# or
4+
deployments = project.deployments.list()
5+
# end list
6+
7+
# get
8+
deployment = gl.project_deployments.get(deployment_id, project_id=1)
9+
# or
10+
deployment = project.deployments.get(deployment_id)
11+
# end get

docs/gl_objects/deployments.rst

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
###########
2+
Deployments
3+
###########
4+
5+
Use :class:`~gitlab.objects.ProjectDeployment` objects to manipulate project
6+
deployments. The :attr:`gitlab.Gitlab.project_deployments`, and
7+
:attr:`Project.deployments <gitlab.objects.Project.deployments>` manager
8+
objects provide helper functions.
9+
10+
Examples
11+
--------
12+
13+
List deployments for a project:
14+
15+
.. literalinclude:: deployments.py
16+
:start-after: # list
17+
:end-before: # end list
18+
19+
Get a single deployment:
20+
21+
.. literalinclude:: deployments.py
22+
:start-after: # get
23+
:end-before: # end get

gitlab/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class Gitlab(object):
9292
GitLab projects commits comments
9393
project_commit_statuses (ProjectCommitStatusManager): Manager for
9494
GitLab projects commits statuses
95+
project_deployments (ProjectDeploymentManager): Manager for GitLab
96+
projects deployments
9597
project_keys (ProjectKeyManager): Manager for GitLab projects keys
9698
project_environments (ProjectEnvironmentManager): Manager for GitLab
9799
projects environments
@@ -178,6 +180,7 @@ def __init__(self, url, private_token=None, email=None, password=None,
178180
self.project_commits = ProjectCommitManager(self)
179181
self.project_commit_comments = ProjectCommitCommentManager(self)
180182
self.project_commit_statuses = ProjectCommitStatusManager(self)
183+
self.project_deployments = ProjectDeploymentManager(self)
181184
self.project_keys = ProjectKeyManager(self)
182185
self.project_environments = ProjectEnvironmentManager(self)
183186
self.project_events = ProjectEventManager(self)

gitlab/objects.py

+12
Original file line numberDiff line numberDiff line change
@@ -1862,6 +1862,17 @@ class ProjectAccessRequestManager(BaseManager):
18621862
obj_cls = ProjectAccessRequest
18631863

18641864

1865+
class ProjectDeployment(GitlabObject):
1866+
_url = '/projects/%(project_id)s/deployments'
1867+
canCreate = False
1868+
canUpdate = False
1869+
canDelete = False
1870+
1871+
1872+
class ProjectDeploymentManager(BaseManager):
1873+
obj_cls = ProjectDeployment
1874+
1875+
18651876
class Project(GitlabObject):
18661877
_url = '/projects'
18671878
_constructorTypes = {'owner': 'User', 'namespace': 'Group'}
@@ -1890,6 +1901,7 @@ class Project(GitlabObject):
18901901
[('project_id', 'id')]),
18911902
('commit_statuses', ProjectCommitStatusManager,
18921903
[('project_id', 'id')]),
1904+
('deployments', ProjectDeploymentManager, [('project_id', 'id')]),
18931905
('environments', ProjectEnvironmentManager, [('project_id', 'id')]),
18941906
('events', ProjectEventManager, [('project_id', 'id')]),
18951907
('files', ProjectFileManager, [('project_id', 'id')]),

0 commit comments

Comments
 (0)