Move CI web hooks page to project settings area
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
0de7c83a78
commit
c293cc9152
8 changed files with 87 additions and 68 deletions
|
@ -29,6 +29,7 @@ v 8.1.0 (unreleased)
|
||||||
- Ensure code blocks are properly highlighted after a note is updated
|
- Ensure code blocks are properly highlighted after a note is updated
|
||||||
- Fix wrong access level badge on MR comments
|
- Fix wrong access level badge on MR comments
|
||||||
- Hide password in the service settings form
|
- Hide password in the service settings form
|
||||||
|
- Move CI web hooks page to project settings area
|
||||||
|
|
||||||
v 8.0.3
|
v 8.0.3
|
||||||
- Fix URL shown in Slack notifications
|
- Fix URL shown in Slack notifications
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
module Ci
|
|
||||||
class WebHooksController < Ci::ApplicationController
|
|
||||||
before_action :authenticate_user!
|
|
||||||
before_action :project
|
|
||||||
before_action :authorize_access_project!
|
|
||||||
before_action :authorize_manage_project!
|
|
||||||
|
|
||||||
layout 'ci/project'
|
|
||||||
|
|
||||||
def index
|
|
||||||
@web_hooks = @project.web_hooks
|
|
||||||
@web_hook = Ci::WebHook.new
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
@web_hook = @project.web_hooks.new(web_hook_params)
|
|
||||||
@web_hook.save
|
|
||||||
|
|
||||||
if @web_hook.valid?
|
|
||||||
redirect_to ci_project_web_hooks_path(@project)
|
|
||||||
else
|
|
||||||
@web_hooks = @project.web_hooks.select(&:persisted?)
|
|
||||||
render :index
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test
|
|
||||||
Ci::TestHookService.new.execute(hook, current_user)
|
|
||||||
|
|
||||||
redirect_to :back
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
hook.destroy
|
|
||||||
|
|
||||||
redirect_to ci_project_web_hooks_path(@project)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def hook
|
|
||||||
@web_hook ||= @project.web_hooks.find(params[:id])
|
|
||||||
end
|
|
||||||
|
|
||||||
def project
|
|
||||||
@project = Ci::Project.find(params[:project_id])
|
|
||||||
end
|
|
||||||
|
|
||||||
def web_hook_params
|
|
||||||
params.require(:web_hook).permit(:url)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
45
app/controllers/projects/ci_web_hooks_controller.rb
Normal file
45
app/controllers/projects/ci_web_hooks_controller.rb
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
class Projects::CiWebHooksController < Projects::ApplicationController
|
||||||
|
before_action :ci_project
|
||||||
|
before_action :authorize_admin_project!
|
||||||
|
|
||||||
|
layout "project_settings"
|
||||||
|
|
||||||
|
def index
|
||||||
|
@web_hooks = @ci_project.web_hooks
|
||||||
|
@web_hook = Ci::WebHook.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@web_hook = @ci_project.web_hooks.new(web_hook_params)
|
||||||
|
@web_hook.save
|
||||||
|
|
||||||
|
if @web_hook.valid?
|
||||||
|
redirect_to namespace_project_ci_web_hooks_path(@project.namespace, @project)
|
||||||
|
else
|
||||||
|
@web_hooks = @ci_project.web_hooks.select(&:persisted?)
|
||||||
|
render :index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test
|
||||||
|
Ci::TestHookService.new.execute(hook, current_user)
|
||||||
|
|
||||||
|
redirect_to :back
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
hook.destroy
|
||||||
|
|
||||||
|
redirect_to namespace_project_ci_web_hooks_path(@project.namespace, @project)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def hook
|
||||||
|
@web_hook ||= @ci_project.web_hooks.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def web_hook_params
|
||||||
|
params.require(:web_hook).permit(:url)
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,11 +11,6 @@
|
||||||
%span
|
%span
|
||||||
Commits
|
Commits
|
||||||
%span.count= @project.commits.count
|
%span.count= @project.commits.count
|
||||||
= nav_link path: 'web_hooks#index' do
|
|
||||||
= link_to ci_project_web_hooks_path(@project) do
|
|
||||||
= icon('link fw')
|
|
||||||
%span
|
|
||||||
Web Hooks
|
|
||||||
= nav_link path: ['services#index', 'services#edit'] do
|
= nav_link path: ['services#index', 'services#edit'] do
|
||||||
= link_to ci_project_services_path(@project) do
|
= link_to ci_project_services_path(@project) do
|
||||||
= icon('share fw')
|
= icon('share fw')
|
||||||
|
|
|
@ -50,6 +50,11 @@
|
||||||
= icon('retweet fw')
|
= icon('retweet fw')
|
||||||
%span
|
%span
|
||||||
Triggers
|
Triggers
|
||||||
|
= nav_link path: 'web_hooks#index' do
|
||||||
|
= link_to namespace_project_ci_web_hooks_path(@project.namespace, @project) do
|
||||||
|
= icon('link fw')
|
||||||
|
%span
|
||||||
|
CI Web Hooks
|
||||||
= nav_link path: 'ci_settings#edit' do
|
= nav_link path: 'ci_settings#edit' do
|
||||||
= link_to edit_namespace_project_ci_settings_path(@project.namespace, @project) do
|
= link_to edit_namespace_project_ci_settings_path(@project.namespace, @project) do
|
||||||
= icon('building fw')
|
= icon('building fw')
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
%hr.clearfix
|
%hr.clearfix
|
||||||
|
|
||||||
= form_for [:ci, @project, @web_hook], html: { class: 'form-horizontal' } do |f|
|
= form_for @web_hook, url: namespace_project_ci_web_hooks_path(@project.namespace, @project), html: { class: 'form-horizontal' } do |f|
|
||||||
-if @web_hook.errors.any?
|
-if @web_hook.errors.any?
|
||||||
.alert.alert-danger
|
.alert.alert-danger
|
||||||
- @web_hook.errors.full_messages.each do |msg|
|
- @web_hook.errors.full_messages.each do |msg|
|
||||||
|
@ -28,9 +28,9 @@
|
||||||
%span.monospace= hook.url
|
%span.monospace= hook.url
|
||||||
%td
|
%td
|
||||||
.pull-right
|
.pull-right
|
||||||
- if @project.commits.any?
|
- if @ci_project.commits.any?
|
||||||
= link_to 'Test Hook', test_ci_project_web_hook_path(@project, hook), class: "btn btn-sm btn-grouped"
|
= link_to 'Test Hook', test_namespace_project_ci_web_hook_path(@project.namespace, @project, hook), class: "btn btn-sm btn-grouped"
|
||||||
= link_to 'Remove', ci_project_web_hook_path(@project, hook), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove btn-sm btn-grouped"
|
= link_to 'Remove', namespace_project_ci_web_hook_path(@project.namespace, @project, hook), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove btn-sm btn-grouped"
|
||||||
|
|
||||||
%h4 Web Hook data example
|
%h4 Web Hook data example
|
||||||
|
|
|
@ -47,12 +47,6 @@ Gitlab::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :web_hooks, only: [:index, :create, :destroy] do
|
|
||||||
member do
|
|
||||||
get :test
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
resources :runner_projects, only: [:create, :destroy]
|
resources :runner_projects, only: [:create, :destroy]
|
||||||
|
|
||||||
resources :events, only: [:index]
|
resources :events, only: [:index]
|
||||||
|
@ -591,6 +585,11 @@ Gitlab::Application.routes.draw do
|
||||||
resource :variables, only: [:show, :update]
|
resource :variables, only: [:show, :update]
|
||||||
resources :triggers, only: [:index, :create, :destroy]
|
resources :triggers, only: [:index, :create, :destroy]
|
||||||
resource :ci_settings, only: [:edit, :update, :destroy]
|
resource :ci_settings, only: [:edit, :update, :destroy]
|
||||||
|
resources :ci_web_hooks, only: [:index, :create, :destroy] do
|
||||||
|
member do
|
||||||
|
get :test
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :hooks, only: [:index, :create, :destroy], constraints: { id: /\d+/ } do
|
resources :hooks, only: [:index, :create, :destroy], constraints: { id: /\d+/ } do
|
||||||
member do
|
member do
|
||||||
|
|
27
spec/features/ci_web_hooks_spec.rb
Normal file
27
spec/features/ci_web_hooks_spec.rb
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'CI web hooks' do
|
||||||
|
let(:user) { create(:user) }
|
||||||
|
before { login_as(user) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
@project = FactoryGirl.create :ci_project
|
||||||
|
@gl_project = @project.gl_project
|
||||||
|
@gl_project.team << [user, :master]
|
||||||
|
visit namespace_project_ci_web_hooks_path(@gl_project.namespace, @gl_project)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'create a trigger' do
|
||||||
|
before do
|
||||||
|
fill_in 'web_hook_url', with: 'http://example.com'
|
||||||
|
click_on 'Add Web Hook'
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(@project.web_hooks.count).to eq(1) }
|
||||||
|
|
||||||
|
it 'revokes the trigger' do
|
||||||
|
click_on 'Remove'
|
||||||
|
expect(@project.web_hooks.count).to eq(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue