summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-01-07 22:28:37 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-01-07 22:28:37 +0000
commit54e6c5ae362790f597a8be110895bed0a660f238 (patch)
treed6f86ef7ef25a30a185977ee359fec6b06c700a1 /lib
parent7693baea93c5104dc6fdddff2dad7d69ddf3631f (diff)
parent55db19ad5f0f3b858776857e2a69e18927d05fc8 (diff)
downloadgitlab-ci-54e6c5ae362790f597a8be110895bed0a660f238.tar.gz
Merge branch 'register-specific-runner' into 'master'
Register specific runner via API without admin access See merge request !21
Diffstat (limited to 'lib')
-rw-r--r--lib/api/runners.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/api/runners.rb b/lib/api/runners.rb
index ef78b09..f8239a1 100644
--- a/lib/api/runners.rb
+++ b/lib/api/runners.rb
@@ -28,10 +28,18 @@ module API
# Example Request:
# POST /runners/register
post "register" do
- authenticate_runners!
required_attributes! [:token]
- runner = Runner.create
+ runner =
+ if params[:token] == GitlabCi::REGISTRATION_TOKEN
+ # Create shared runner. Requires admin access
+ Runner.create
+ elsif project = Project.find_by(token: params[:token])
+ # Create a specific runner for project.
+ project.runners.create
+ end
+
+ return forbidden! unless runner
if runner.id
present runner, with: Entities::Runner