Skip to content

Commit 04435e1

Browse files
author
Gauvain Pocentek
committed
Add support for project runners
This API allows to enable/disable specific runners for a project, and to list the project associated runners. Fix #205
1 parent de0536b commit 04435e1

File tree

3 files changed

+67
-4
lines changed

3 files changed

+67
-4
lines changed

docs/gl_objects/runners.py

+18
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,21 @@
2222
# or
2323
runner.delete()
2424
# end delete
25+
26+
# project list
27+
runners = gl.project_runners.list(project_id=1)
28+
# or
29+
runners = project.runners.list()
30+
# end project list
31+
32+
# project enable
33+
p_runner = gl.project_runners.create({'runner_id': runner.id}, project_id=1)
34+
# or
35+
p_runner = project.runners.create({'runner_id': runner.id})
36+
# end project enable
37+
38+
# project disable
39+
gl.project_runners.delete(runner.id)
40+
# or
41+
project.runners.delete(runner.id)
42+
# end project disable

docs/gl_objects/runners.rst

+38-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22
Runners
33
#######
44

5-
Global runners
6-
==============
5+
Runners are external process used to run CI jobs. They are deployed by the
6+
administrator and registered to the GitLab instance.
77

8-
Use :class:`~gitlab.objects.Runner` objects to manipulate runners. The
9-
:attr:`gitlab.Gitlab.runners` manager object provides helper functions.
8+
Shared runners are available for all projects. Specific runners are enabled for
9+
a list of projects.
10+
11+
Global runners (admin)
12+
======================
13+
14+
* Object class: :class:`~gitlab.objects.Runner`
15+
* Manager objects: :attr:`gitlab.Gitlab.runners`
1016

1117
Examples
1218
--------
@@ -48,3 +54,31 @@ Remove a runner:
4854
.. literalinclude:: runners.py
4955
:start-after: # delete
5056
:end-before: # end delete
57+
58+
Project runners
59+
===============
60+
61+
* Object class: :class:`~gitlab.objects.ProjectRunner`
62+
* Manager objects: :attr:`gitlab.Gitlab.runners`,
63+
:attr:`gitlab.Gitlab.Project.runners`
64+
65+
Examples
66+
--------
67+
68+
List the runners for a project:
69+
70+
.. literalinclude:: runners.py
71+
:start-after: # project list
72+
:end-before: # end project list
73+
74+
Enable a specific runner for a project:
75+
76+
.. literalinclude:: runners.py
77+
:start-after: # project enable
78+
:end-before: # end project enable
79+
80+
Disable a specific runner for a project:
81+
82+
.. literalinclude:: runners.py
83+
:start-after: # project disable
84+
:end-before: # end project disable

gitlab/objects.py

+11
Original file line numberDiff line numberDiff line change
@@ -2142,6 +2142,16 @@ class ProjectDeploymentManager(BaseManager):
21422142
obj_cls = ProjectDeployment
21432143

21442144

2145+
class ProjectRunner(GitlabObject):
2146+
_url = '/projects/%(project_id)s/runners'
2147+
canUpdate = False
2148+
requiredCreateAttrs = ['runner_id']
2149+
2150+
2151+
class ProjectRunnerManager(BaseManager):
2152+
obj_cls = ProjectRunner
2153+
2154+
21452155
class Project(GitlabObject):
21462156
_url = '/projects'
21472157
_constructorTypes = {'owner': 'User', 'namespace': 'Group'}
@@ -2189,6 +2199,7 @@ class Project(GitlabObject):
21892199
('notificationsettings', ProjectNotificationSettingsManager,
21902200
[('project_id', 'id')]),
21912201
('pipelines', ProjectPipelineManager, [('project_id', 'id')]),
2202+
('runners', ProjectRunnerManager, [('project_id', 'id')]),
21922203
('services', ProjectServiceManager, [('project_id', 'id')]),
21932204
('snippets', ProjectSnippetManager, [('project_id', 'id')]),
21942205
('tags', ProjectTagManager, [('project_id', 'id')]),

0 commit comments

Comments
 (0)