summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-09-28 16:47:18 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-09-28 16:47:18 +0200
commitb65641959165e8d7daf47f921b058a647189a060 (patch)
treef6d14d73b63006ca4b917adda6694d4285743fe3
parentd8e631c1e5de535864f36e985e9bfbc4a8482916 (diff)
parentc876bfa0f28ddae7fbca314505f5b150b9cec194 (diff)
downloadgitlab-ce-b65641959165e8d7daf47f921b058a647189a060.tar.gz
Merge branch 'move-runners-page'
-rw-r--r--CHANGELOG1
-rw-r--r--app/controllers/ci/projects_controller.rb3
-rw-r--r--app/controllers/ci/runner_projects_controller.rb8
-rw-r--r--app/controllers/ci/runners_controller.rb73
-rw-r--r--app/controllers/projects/runners_controller.rb69
-rw-r--r--app/helpers/gitlab_routing_helper.rb8
-rw-r--r--app/models/ci/project.rb2
-rw-r--r--app/views/ci/projects/show.html.haml2
-rw-r--r--app/views/ci/shared/_guide.html.haml2
-rw-r--r--app/views/layouts/ci/_nav_project.html.haml5
-rw-r--r--app/views/layouts/nav/_project_settings.html.haml6
-rw-r--r--app/views/projects/runners/_runner.html.haml (renamed from app/views/ci/runners/_runner.html.haml)13
-rw-r--r--app/views/projects/runners/_shared_runners.html.haml (renamed from app/views/ci/runners/_shared_runners.html.haml)8
-rw-r--r--app/views/projects/runners/_specific_runners.html.haml (renamed from app/views/ci/runners/_specific_runners.html.haml)6
-rw-r--r--app/views/projects/runners/edit.html.haml (renamed from app/views/ci/runners/edit.html.haml)2
-rw-r--r--app/views/projects/runners/index.html.haml (renamed from app/views/ci/runners/index.html.haml)0
-rw-r--r--app/views/projects/runners/show.html.haml (renamed from app/views/ci/runners/show.html.haml)0
-rw-r--r--config/routes.rb15
-rw-r--r--spec/features/runners_spec.rb (renamed from spec/features/ci/runners_spec.rb)25
19 files changed, 123 insertions, 125 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 888ff0ffd7e..a0f1fa12082 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -15,6 +15,7 @@ v 8.1.0 (unreleased)
- Remove "Continuous Integration" page from dashboard
- Add notes and SSL verification entries to hook APIs (Ben Boeckel)
- Fix grammar in admin area "labels" .nothing-here-block when no labels exist.
+ - Move CI runners page to project settings area
v 8.0.3 (unreleased)
diff --git a/app/controllers/ci/projects_controller.rb b/app/controllers/ci/projects_controller.rb
index 6111753a7fb..13766fb8f6f 100644
--- a/app/controllers/ci/projects_controller.rb
+++ b/app/controllers/ci/projects_controller.rb
@@ -55,7 +55,8 @@ module Ci
def toggle_shared_runners
project.toggle!(:shared_runners_enabled)
- redirect_to :back
+
+ redirect_to namespace_project_runners_path(project.gl_project.namespace, project.gl_project)
end
def dumped_yaml
diff --git a/app/controllers/ci/runner_projects_controller.rb b/app/controllers/ci/runner_projects_controller.rb
index a8bdd5bb362..97f01d40af5 100644
--- a/app/controllers/ci/runner_projects_controller.rb
+++ b/app/controllers/ci/runner_projects_controller.rb
@@ -11,10 +11,12 @@ module Ci
return head(403) unless current_user.ci_authorized_runners.include?(@runner)
+ path = runners_path(@project.gl_project)
+
if @runner.assign_to(project, current_user)
- redirect_to ci_project_runners_path(project)
+ redirect_to path
else
- redirect_to ci_project_runners_path(project), alert: 'Failed adding runner to project'
+ redirect_to path, alert: 'Failed adding runner to project'
end
end
@@ -22,7 +24,7 @@ module Ci
runner_project = project.runner_projects.find(params[:id])
runner_project.destroy
- redirect_to ci_project_runners_path(project)
+ redirect_to runners_path(@project.gl_project)
end
private
diff --git a/app/controllers/ci/runners_controller.rb b/app/controllers/ci/runners_controller.rb
deleted file mode 100644
index a672370302b..00000000000
--- a/app/controllers/ci/runners_controller.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-module Ci
- class RunnersController < Ci::ApplicationController
- before_action :authenticate_user!
- before_action :project
- before_action :set_runner, only: [:edit, :update, :destroy, :pause, :resume, :show]
- before_action :authorize_access_project!
- before_action :authorize_manage_project!
-
- layout 'ci/project'
-
- def index
- @runners = @project.runners.order('id DESC')
- @specific_runners =
- Ci::Runner.specific.includes(:runner_projects).
- where(Ci::RunnerProject.table_name => { project_id: current_user.authorized_projects } ).
- where.not(id: @runners).order("#{Ci::Runner.table_name}.id DESC").page(params[:page]).per(20)
- @shared_runners = Ci::Runner.shared.active
- @shared_runners_count = @shared_runners.count(:all)
- end
-
- def edit
- end
-
- def update
- if @runner.update_attributes(runner_params)
- redirect_to edit_ci_project_runner_path(@project, @runner), notice: 'Runner was successfully updated.'
- else
- redirect_to edit_ci_project_runner_path(@project, @runner), alert: 'Runner was not updated.'
- end
- end
-
- def destroy
- if @runner.only_for?(@project)
- @runner.destroy
- end
-
- redirect_to ci_project_runners_path(@project)
- end
-
- def resume
- if @runner.update_attributes(active: true)
- redirect_to ci_project_runners_path(@project, @runner), notice: 'Runner was successfully updated.'
- else
- redirect_to ci_project_runners_path(@project, @runner), alert: 'Runner was not updated.'
- end
- end
-
- def pause
- if @runner.update_attributes(active: false)
- redirect_to ci_project_runners_path(@project, @runner), notice: 'Runner was successfully updated.'
- else
- redirect_to ci_project_runners_path(@project, @runner), alert: 'Runner was not updated.'
- end
- end
-
- def show
- end
-
- protected
-
- def project
- @project = Ci::Project.find(params[:project_id])
- end
-
- def set_runner
- @runner ||= @project.runners.find(params[:id])
- end
-
- def runner_params
- params.require(:runner).permit(:description, :tag_list, :contacted_at, :active)
- end
- end
-end
diff --git a/app/controllers/projects/runners_controller.rb b/app/controllers/projects/runners_controller.rb
new file mode 100644
index 00000000000..d59884a1dd7
--- /dev/null
+++ b/app/controllers/projects/runners_controller.rb
@@ -0,0 +1,69 @@
+class Projects::RunnersController < Projects::ApplicationController
+ before_action :ci_project
+ before_action :set_runner, only: [:edit, :update, :destroy, :pause, :resume, :show]
+ before_action :authorize_admin_project!
+
+ layout 'project_settings'
+
+ def index
+ @runners = @ci_project.runners.order('id DESC')
+ @specific_runners =
+ Ci::Runner.specific.includes(:runner_projects).
+ where(Ci::RunnerProject.table_name => { project_id: current_user.authorized_projects } ).
+ where.not(id: @runners).order("#{Ci::Runner.table_name}.id DESC").page(params[:page]).per(20)
+ @shared_runners = Ci::Runner.shared.active
+ @shared_runners_count = @shared_runners.count(:all)
+ end
+
+ def edit
+ end
+
+ def update
+ if @runner.update_attributes(runner_params)
+ redirect_to runner_path(@runner), notice: 'Runner was successfully updated.'
+ else
+ redirect_to runner_path(@runner), alert: 'Runner was not updated.'
+ end
+ end
+
+ def destroy
+ if @runner.only_for?(@ci_project)
+ @runner.destroy
+ end
+
+ redirect_to runners_path(@project)
+ end
+
+ def resume
+ if @runner.update_attributes(active: true)
+ redirect_to runner_path(@runner), notice: 'Runner was successfully updated.'
+ else
+ redirect_to runner_path(@runner), alert: 'Runner was not updated.'
+ end
+ end
+
+ def pause
+ if @runner.update_attributes(active: false)
+ redirect_to runner_path(@runner), notice: 'Runner was successfully updated.'
+ else
+ redirect_to runner_path(@runner), alert: 'Runner was not updated.'
+ end
+ end
+
+ def show
+ end
+
+ protected
+
+ def ci_project
+ @ci_project = @project.gitlab_ci_project
+ end
+
+ def set_runner
+ @runner ||= @ci_project.runners.find(params[:id])
+ end
+
+ def runner_params
+ params.require(:runner).permit(:description, :tag_list, :contacted_at, :active)
+ end
+end
diff --git a/app/helpers/gitlab_routing_helper.rb b/app/helpers/gitlab_routing_helper.rb
index e0816f4e714..4d9da6ff837 100644
--- a/app/helpers/gitlab_routing_helper.rb
+++ b/app/helpers/gitlab_routing_helper.rb
@@ -33,6 +33,14 @@ module GitlabRoutingHelper
edit_namespace_project_path(project.namespace, project, *args)
end
+ def runners_path(project, *args)
+ namespace_project_runners_path(project.namespace, project, *args)
+ end
+
+ def runner_path(runner, *args)
+ namespace_project_runner_path(@project.namespace, @project, runner, *args)
+ end
+
def issue_path(entity, *args)
namespace_project_issue_path(entity.project.namespace, entity.project, entity, *args)
end
diff --git a/app/models/ci/project.rb b/app/models/ci/project.rb
index a52e28615f7..8fb54b90d61 100644
--- a/app/models/ci/project.rb
+++ b/app/models/ci/project.rb
@@ -100,7 +100,7 @@ module Ci
def unassigned(runner)
joins("LEFT JOIN #{Ci::RunnerProject.table_name} ON #{Ci::RunnerProject.table_name}.project_id = #{Ci::Project.table_name}.id " \
"AND #{Ci::RunnerProject.table_name}.runner_id = #{runner.id}").
- where('#{Ci::RunnerProject.table_name}.project_id' => nil)
+ where("#{Ci::RunnerProject.table_name}.project_id" => nil)
end
def ordered_by_last_commit_date
diff --git a/app/views/ci/projects/show.html.haml b/app/views/ci/projects/show.html.haml
index 6443378af99..73e60795ba6 100644
--- a/app/views/ci/projects/show.html.haml
+++ b/app/views/ci/projects/show.html.haml
@@ -3,7 +3,7 @@
- if current_user && can?(current_user, :manage_project, gl_project) && !@project.any_runners?
.alert.alert-danger
Builds for this project wont be served unless you configure runners on
- = link_to "Runners page", ci_project_runners_path(@project)
+ = link_to "Runners page", runners_path(@project.gl_project)
%ul.nav.nav-tabs.append-bottom-20
%li{class: ref_tab_class}
diff --git a/app/views/ci/shared/_guide.html.haml b/app/views/ci/shared/_guide.html.haml
index 8a42f29b77c..db2d7f2f4b6 100644
--- a/app/views/ci/shared/_guide.html.haml
+++ b/app/views/ci/shared/_guide.html.haml
@@ -4,7 +4,7 @@
%ol
%li
Add at least one runner to the project.
- Go to #{link_to 'Runners page', ci_project_runners_path(@project), target: :blank} for instructions.
+ Go to #{link_to 'Runners page', runners_path(@project.gl_project), target: :blank} for instructions.
%li
Put the .gitlab-ci.yml in the root of your repository. Examples can be found in #{link_to "Configuring project (.gitlab-ci.yml)", "http://doc.gitlab.com/ci/yaml/README.html", target: :blank}.
You can also test your .gitlab-ci.yml in the #{link_to "Lint", ci_lint_path}
diff --git a/app/views/layouts/ci/_nav_project.html.haml b/app/views/layouts/ci/_nav_project.html.haml
index 7daf9342e42..9ebe7eabd8e 100644
--- a/app/views/layouts/ci/_nav_project.html.haml
+++ b/app/views/layouts/ci/_nav_project.html.haml
@@ -11,11 +11,6 @@
%span
Commits
%span.count= @project.commits.count
- = nav_link path: ['runners#index', 'runners#show', 'runners#edit'] do
- = link_to ci_project_runners_path(@project) do
- = icon('cog fw')
- %span
- Runners
= nav_link path: 'variables#show' do
= link_to ci_project_variables_path(@project) do
= icon('code fw')
diff --git a/app/views/layouts/nav/_project_settings.html.haml b/app/views/layouts/nav/_project_settings.html.haml
index 857fb199957..a85dd71126c 100644
--- a/app/views/layouts/nav/_project_settings.html.haml
+++ b/app/views/layouts/nav/_project_settings.html.haml
@@ -34,3 +34,9 @@
%span
Protected Branches
+ - if @project.gitlab_ci?
+ = nav_link(controller: :runners) do
+ = link_to namespace_project_runners_path(@project.namespace, @project), title: 'Runners', data: {placement: 'right'} do
+ = icon('cog fw')
+ %span
+ Runners
diff --git a/app/views/ci/runners/_runner.html.haml b/app/views/projects/runners/_runner.html.haml
index ef8622e2807..e6b8a2e6fe7 100644
--- a/app/views/ci/runners/_runner.html.haml
+++ b/app/views/projects/runners/_runner.html.haml
@@ -3,9 +3,9 @@
= runner_status_icon(runner)
%span.monospace
- if @runners.include?(runner)
- = link_to runner.short_sha, ci_project_runner_path(@project, runner)
+ = link_to runner.short_sha, runner_path(runner)
%small
- =link_to edit_ci_project_runner_path(@project, runner) do
+ =link_to edit_namespace_project_runner_path(@project.namespace, @project, runner) do
%i.fa.fa-edit.btn
- else
= runner.short_sha
@@ -13,12 +13,12 @@
.pull-right
- if @runners.include?(runner)
- if runner.belongs_to_one_project?
- = link_to 'Remove runner', [:ci, @project, runner], data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
+ = link_to 'Remove runner', runner_path(runner), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
- else
- - runner_project = @project.runner_projects.find_by(runner_id: runner)
- = link_to 'Disable for this project', [:ci, @project, runner_project], data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
+ - runner_project = @ci_project.runner_projects.find_by(runner_id: runner)
+ = link_to 'Disable for this project', [:ci, @ci_project, runner_project], data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
- elsif runner.specific?
- = form_for [:ci, @project, @project.runner_projects.new] do |f|
+ = form_for [:ci, @ci_project, @ci_project.runner_projects.new] do |f|
= f.hidden_field :runner_id, value: runner.id
= f.submit 'Enable for this project', class: 'btn btn-sm'
.pull-right
@@ -32,4 +32,3 @@
- runner.tag_list.each do |tag|
%span.label.label-primary
= tag
-
diff --git a/app/views/ci/runners/_shared_runners.html.haml b/app/views/projects/runners/_shared_runners.html.haml
index 944b3fd930d..316ea747b14 100644
--- a/app/views/ci/runners/_shared_runners.html.haml
+++ b/app/views/projects/runners/_shared_runners.html.haml
@@ -3,11 +3,11 @@
.bs-callout.bs-callout-warning
GitLab Runners do not offer secure isolation between projects that they do builds for. You are TRUSTING all GitLab users who can push code to project A, B or C to run shell scripts on the machine hosting runner X.
%hr
- - if @project.shared_runners_enabled
- = link_to toggle_shared_runners_ci_project_path(@project), class: 'btn btn-warning', method: :post do
+ - if @ci_project.shared_runners_enabled
+ = link_to toggle_shared_runners_ci_project_path(@ci_project), class: 'btn btn-warning', method: :post do
Disable shared runners
- else
- = link_to toggle_shared_runners_ci_project_path(@project), class: 'btn btn-success', method: :post do
+ = link_to toggle_shared_runners_ci_project_path(@ci_project), class: 'btn btn-success', method: :post do
Enable shared runners
&nbsp; for this project
@@ -17,7 +17,7 @@
- else
%h4.underlined-title Available shared runners - #{@shared_runners_count}
%ul.bordered-list.available-shared-runners
- = render @shared_runners.first(10)
+ = render partial: 'runner', collection: @shared_runners, as: :runner
- if @shared_runners_count > 10
.light
and #{@shared_runners_count - 10} more...
diff --git a/app/views/ci/runners/_specific_runners.html.haml b/app/views/projects/runners/_specific_runners.html.haml
index 0604e7a46c5..c13625c7e49 100644
--- a/app/views/ci/runners/_specific_runners.html.haml
+++ b/app/views/projects/runners/_specific_runners.html.haml
@@ -12,7 +12,7 @@
%code #{ci_root_url(only_path: false)}
%li
Use the following registration token during setup:
- %code #{@project.token}
+ %code #{@ci_project.token}
%li
Start runner!
@@ -20,10 +20,10 @@
- if @runners.any?
%h4.underlined-title Runners activated for this project
%ul.bordered-list.activated-specific-runners
- = render @runners
+ = render partial: 'runner', collection: @runners, as: :runner
- if @specific_runners.any?
%h4.underlined-title Available specific runners
%ul.bordered-list.available-specific-runners
- = render @specific_runners
+ = render partial: 'runner', collection: @specific_runners, as: :runner
= paginate @specific_runners
diff --git a/app/views/ci/runners/edit.html.haml b/app/views/projects/runners/edit.html.haml
index 81c8e58ae2b..66851d38316 100644
--- a/app/views/ci/runners/edit.html.haml
+++ b/app/views/projects/runners/edit.html.haml
@@ -1,6 +1,6 @@
%h4 Runner ##{@runner.id}
%hr
-= form_for [:ci, @project, @runner], html: { class: 'form-horizontal' } do |f|
+= form_for @runner, url: runner_path(@runner), html: { class: 'form-horizontal' } do |f|
.form-group
= label :active, "Active", class: 'control-label'
.col-sm-10
diff --git a/app/views/ci/runners/index.html.haml b/app/views/projects/runners/index.html.haml
index 529fb9c296d..529fb9c296d 100644
--- a/app/views/ci/runners/index.html.haml
+++ b/app/views/projects/runners/index.html.haml
diff --git a/app/views/ci/runners/show.html.haml b/app/views/projects/runners/show.html.haml
index ffec495f85a..ffec495f85a 100644
--- a/app/views/ci/runners/show.html.haml
+++ b/app/views/projects/runners/show.html.haml
diff --git a/config/routes.rb b/config/routes.rb
index 0792cb559e5..201add02335 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -55,13 +55,6 @@ Gitlab::Application.routes.draw do
resources :triggers, only: [:index, :create, :destroy]
- resources :runners, only: [:index, :edit, :update, :destroy, :show] do
- member do
- get :resume
- get :pause
- end
- end
-
resources :runner_projects, only: [:create, :destroy]
resources :events, only: [:index]
@@ -653,8 +646,14 @@ Gitlab::Application.routes.draw do
get ":secret/:filename", action: :show, as: :show, constraints: { filename: /[^\/]+/ }
end
end
- end
+ resources :runners, only: [:index, :edit, :update, :destroy, :show] do
+ member do
+ get :resume
+ get :pause
+ end
+ end
+ end
end
end
diff --git a/spec/features/ci/runners_spec.rb b/spec/features/runners_spec.rb
index 15147f15eb3..06adb7633b2 100644
--- a/spec/features/ci/runners_spec.rb
+++ b/spec/features/runners_spec.rb
@@ -1,11 +1,10 @@
require 'spec_helper'
describe "Runners" do
- let(:user) { create(:user) }
+ include GitlabRoutingHelper
- before do
- login_as(user)
- end
+ let(:user) { create(:user) }
+ before { login_as(user) }
describe "specific runners" do
before do
@@ -20,18 +19,17 @@ describe "Runners" do
@specific_runner2 = FactoryGirl.create :ci_specific_runner
@project.runners << @specific_runner
@project2.runners << @specific_runner2
+
+ visit runners_path(@project.gl_project)
end
it "places runners in right places" do
- visit ci_project_runners_path(@project)
expect(page.find(".available-specific-runners")).to have_content(@specific_runner2.display_name)
expect(page.find(".activated-specific-runners")).to have_content(@specific_runner.display_name)
expect(page.find(".available-shared-runners")).to have_content(@shared_runner.display_name)
end
it "enables specific runner for project" do
- visit ci_project_runners_path(@project)
-
within ".available-specific-runners" do
click_on "Enable for this project"
end
@@ -41,8 +39,7 @@ describe "Runners" do
it "disables specific runner for project" do
@project2.runners << @specific_runner
-
- visit ci_project_runners_path(@project)
+ visit runners_path(@project.gl_project)
within ".activated-specific-runners" do
click_on "Disable for this project"
@@ -52,8 +49,6 @@ describe "Runners" do
end
it "removes specific runner for project if this is last project for that runners" do
- visit ci_project_runners_path(@project)
-
within ".activated-specific-runners" do
click_on "Remove runner"
end
@@ -66,13 +61,11 @@ describe "Runners" do
before do
@project = FactoryGirl.create :ci_project
@project.gl_project.team << [user, :master]
+ visit runners_path(@project.gl_project)
end
it "enables shared runners" do
- visit ci_project_runners_path(@project)
-
click_on "Enable shared runners"
-
expect(@project.reload.shared_runners_enabled).to be_truthy
end
end
@@ -83,13 +76,11 @@ describe "Runners" do
@project.gl_project.team << [user, :master]
@specific_runner = FactoryGirl.create :ci_specific_runner
@project.runners << @specific_runner
+ visit runners_path(@project.gl_project)
end
it "shows runner information" do
- visit ci_project_runners_path(@project)
-
click_on @specific_runner.short_sha
-
expect(page).to have_content(@specific_runner.platform)
end
end