diff options
| author | Kamil Trzciński <ayufan@ayufan.eu> | 2015-09-16 11:57:40 +0000 |
|---|---|---|
| committer | Kamil Trzciński <ayufan@ayufan.eu> | 2015-09-16 11:57:40 +0000 |
| commit | cccd269da3f5d82c5d14289980d9b52c9cad08db (patch) | |
| tree | 2947658dfff44a3873f7d350f0353dbdb7b9b541 /lib/ci/api/runners.rb | |
| parent | 7d59ba00b9aa1a8be28f1b7ccaa1c628be90aabb (diff) | |
| parent | ac8d2eb065e9522679d4eae4649c6815daa5460c (diff) | |
| download | gitlab-ce-cccd269da3f5d82c5d14289980d9b52c9cad08db.tar.gz | |
Merge branch 'ci-and-ce-sitting-in-a-tree-k-i-s-s-i-n-g' into 'master'
Merge CI into CE
First step of #2164.
- [x] Merge latest CE master
- [x] Make application start
- [x] Re-use gitlab sessions (remove CI oauth part)
- [x] Get rid of gitlab_ci.yml config
- [x] Make tests start
- [x] Make most CI features works
- [x] Make tests green
- [x] Write migration documentation
- [x] Add CI builds to CE backup
See merge request !1204
Diffstat (limited to 'lib/ci/api/runners.rb')
| -rw-r--r-- | lib/ci/api/runners.rb | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/lib/ci/api/runners.rb b/lib/ci/api/runners.rb new file mode 100644 index 00000000000..1466fe4356e --- /dev/null +++ b/lib/ci/api/runners.rb @@ -0,0 +1,69 @@ +module Ci + module API + # Runners API + class Runners < Grape::API + resource :runners do + # Get list of all available runners + # + # Example Request: + # GET /runners + get do + authenticate! + runners = Ci::Runner.all + + present runners, with: Entities::Runner + end + + # Delete runner + # Parameters: + # token (required) - The unique token of runner + # + # Example Request: + # GET /runners/delete + delete "delete" do + required_attributes! [:token] + authenticate_runner! + Ci::Runner.find_by_token(params[:token]).destroy + end + + # Register a new runner + # + # Note: This is an "internal" API called when setting up + # runners, so it is authenticated differently. + # + # Parameters: + # token (required) - The unique token of runner + # + # Example Request: + # POST /runners/register + post "register" do + required_attributes! [:token] + + runner = + if params[:token] == GitlabCi::REGISTRATION_TOKEN + # Create shared runner. Requires admin access + Ci::Runner.create( + description: params[:description], + tag_list: params[:tag_list], + is_shared: true + ) + elsif project = Ci::Project.find_by(token: params[:token]) + # Create a specific runner for project. + project.runners.create( + description: params[:description], + tag_list: params[:tag_list] + ) + end + + return forbidden! unless runner + + if runner.id + present runner, with: Entities::Runner + else + not_found! + end + end + end + end + end +end |
