summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2017-01-21 14:42:12 +0100
committerGauvain Pocentek <gauvain@pocentek.net>2017-01-21 14:42:12 +0100
commit04435e1b13166fb45216c494f3af4d9bdb76bcaf (patch)
tree894bc1b8da43ea03cac315a5f144e42e4b8ac9a7
parentde0536b1cfff43c494c64930a37333529e589a94 (diff)
downloadgitlab-04435e1b13166fb45216c494f3af4d9bdb76bcaf.tar.gz
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
-rw-r--r--docs/gl_objects/runners.py18
-rw-r--r--docs/gl_objects/runners.rst42
-rw-r--r--gitlab/objects.py11
3 files changed, 67 insertions, 4 deletions
diff --git a/docs/gl_objects/runners.py b/docs/gl_objects/runners.py
index 3de36df..1a9cb82 100644
--- a/docs/gl_objects/runners.py
+++ b/docs/gl_objects/runners.py
@@ -22,3 +22,21 @@ gl.runners.delete(runner_id)
# or
runner.delete()
# end delete
+
+# project list
+runners = gl.project_runners.list(project_id=1)
+# or
+runners = project.runners.list()
+# end project list
+
+# project enable
+p_runner = gl.project_runners.create({'runner_id': runner.id}, project_id=1)
+# or
+p_runner = project.runners.create({'runner_id': runner.id})
+# end project enable
+
+# project disable
+gl.project_runners.delete(runner.id)
+# or
+project.runners.delete(runner.id)
+# end project disable
diff --git a/docs/gl_objects/runners.rst b/docs/gl_objects/runners.rst
index 2f7e599..02db9be 100644
--- a/docs/gl_objects/runners.rst
+++ b/docs/gl_objects/runners.rst
@@ -2,11 +2,17 @@
Runners
#######
-Global runners
-==============
+Runners are external process used to run CI jobs. They are deployed by the
+administrator and registered to the GitLab instance.
-Use :class:`~gitlab.objects.Runner` objects to manipulate runners. The
-:attr:`gitlab.Gitlab.runners` manager object provides helper functions.
+Shared runners are available for all projects. Specific runners are enabled for
+a list of projects.
+
+Global runners (admin)
+======================
+
+* Object class: :class:`~gitlab.objects.Runner`
+* Manager objects: :attr:`gitlab.Gitlab.runners`
Examples
--------
@@ -48,3 +54,31 @@ Remove a runner:
.. literalinclude:: runners.py
:start-after: # delete
:end-before: # end delete
+
+Project runners
+===============
+
+* Object class: :class:`~gitlab.objects.ProjectRunner`
+* Manager objects: :attr:`gitlab.Gitlab.runners`,
+ :attr:`gitlab.Gitlab.Project.runners`
+
+Examples
+--------
+
+List the runners for a project:
+
+.. literalinclude:: runners.py
+ :start-after: # project list
+ :end-before: # end project list
+
+Enable a specific runner for a project:
+
+.. literalinclude:: runners.py
+ :start-after: # project enable
+ :end-before: # end project enable
+
+Disable a specific runner for a project:
+
+.. literalinclude:: runners.py
+ :start-after: # project disable
+ :end-before: # end project disable
diff --git a/gitlab/objects.py b/gitlab/objects.py
index b2c0c04..3f09aad 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -2142,6 +2142,16 @@ class ProjectDeploymentManager(BaseManager):
obj_cls = ProjectDeployment
+class ProjectRunner(GitlabObject):
+ _url = '/projects/%(project_id)s/runners'
+ canUpdate = False
+ requiredCreateAttrs = ['runner_id']
+
+
+class ProjectRunnerManager(BaseManager):
+ obj_cls = ProjectRunner
+
+
class Project(GitlabObject):
_url = '/projects'
_constructorTypes = {'owner': 'User', 'namespace': 'Group'}
@@ -2189,6 +2199,7 @@ class Project(GitlabObject):
('notificationsettings', ProjectNotificationSettingsManager,
[('project_id', 'id')]),
('pipelines', ProjectPipelineManager, [('project_id', 'id')]),
+ ('runners', ProjectRunnerManager, [('project_id', 'id')]),
('services', ProjectServiceManager, [('project_id', 'id')]),
('snippets', ProjectSnippetManager, [('project_id', 'id')]),
('tags', ProjectTagManager, [('project_id', 'id')]),