Skip to content
Snippets Groups Projects
Commit 52d5d7da authored by Kamil Trzcinski's avatar Kamil Trzcinski
Browse files

Create PipelinesSettingsController for showing settings page

parent 7e8ef1b8
No related branches found
No related tags found
No related merge requests found
class Projects::PipelinesController < Projects::ApplicationController
before_action :pipeline, except: [:index, :new, :create, :settings, :update_settings]
before_action :pipeline, except: [:index, :new, :create]
before_action :commit, only: [:show]
before_action :authorize_read_pipeline!
before_action :authorize_create_pipeline!, only: [:new, :create]
before_action :authorize_update_pipeline!, only: [:retry, :cancel]
before_action :authorize_admin_pipeline!, only: [:settings, :update_settings]
 
def index
@scope = params[:scope]
Loading
Loading
@@ -44,36 +43,12 @@ class Projects::PipelinesController < Projects::ApplicationController
redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project)
end
 
def settings
@ref = params[:ref] || @project.default_branch || 'master'
@build_badge = Gitlab::Badge::Build.new(@project, @ref)
end
def update_settings
if @project.update_attributes(pipelines_settings_params)
flash[:notice] = "CI/CD Pipelines settings for '#{@project.name}' was successfully updated."
redirect_to(
settings_namespace_project_pipelines_path(@project.namespace, @project),
notice: "CI/CD Pipelines settings for '#{@project.name}' was successfully updated."
)
else
render 'settings'
end
end
private
 
def create_params
params.require(:pipeline).permit(:ref)
end
 
def pipelines_settings_params
params.require(:project).permit(
:runners_token, :builds_enabled, :build_allow_git_fetch, :build_timeout_in_minutes, :build_coverage_regex,
:public_builds
)
end
def pipeline
@pipeline ||= project.pipelines.find_by!(id: params[:id])
end
Loading
Loading
class Projects::PipelinesSettingsController < Projects::ApplicationController
before_action :authorize_admin_pipeline!
def show
@ref = params[:ref] || @project.default_branch || 'master'
@build_badge = Gitlab::Badge::Build.new(@project, @ref)
end
def update
if @project.update_attributes(update_params)
flash[:notice] = "CI/CD Pipelines settings for '#{@project.name}' was successfully updated."
redirect_to(
namespace_project_pipelines_settings_path(@project.namespace, @project),
notice: "CI/CD Pipelines settings for '#{@project.name}' was successfully updated."
)
else
render 'index'
end
end
private
def create_params
params.require(:pipeline).permit(:ref)
end
def update_params
params.require(:project).permit(
:runners_token, :builds_enabled, :build_allow_git_fetch, :build_timeout_in_minutes, :build_coverage_regex,
:public_builds
)
end
end
Loading
Loading
@@ -25,7 +25,7 @@ class Projects::RefsController < Projects::ApplicationController
when "graphs_commits"
commits_namespace_project_graph_path(@project.namespace, @project, @id)
when "badges"
settings_namespace_project_pipelines_path(@project.namespace, @project, ref: @id)
namespace_project_pipelines_settings_path(@project.namespace, @project, ref: @id)
else
namespace_project_commits_path(@project.namespace, @project, @id)
end
Loading
Loading
Loading
Loading
@@ -39,7 +39,7 @@
= link_to namespace_project_triggers_path(@project.namespace, @project), title: 'Triggers' do
%span
Triggers
= nav_link(controller: :pipelines) do
= link_to settings_namespace_project_pipelines_path(@project.namespace, @project), title: 'CI/CD Pipelines' do
= nav_link(controller: :pipelines_settings) do
= link_to namespace_project_pipelines_settings_path(@project.namespace, @project), title: 'CI/CD Pipelines' do
%span
CI/CD Pipelines
Loading
Loading
@@ -7,7 +7,7 @@
.col-lg-9
%h5.prepend-top-0
Pipelines
= form_for @project, url: settings_namespace_project_pipelines_path(@project.namespace.becomes(Namespace), @project), remote: true, authenticity_token: true do |f|
= form_for @project, url: namespace_project_pipelines_settings_path(@project.namespace.becomes(Namespace), @project), remote: true, authenticity_token: true do |f|
%fieldset.builds-feature
- unless @repository.gitlab_ci_yml
.form-group
Loading
Loading
Loading
Loading
@@ -732,7 +732,9 @@ Rails.application.routes.draw do
resources :triggers, only: [:index, :create, :destroy]
 
resources :pipelines, only: [:index, :new, :create, :show] do
resource :settings, only: [:index, :update]
collection do
resource :pipelines_settings, path: 'settings', only: [:show, :update]
end
 
member do
post :cancel
Loading
Loading
require 'spec_helper'
feature "Pipelines settings", feature: true do
include GitlabRoutingHelper
let(:project) { create(:empty_project) }
let(:user) { create(:user) }
let(:role) { :developer }
background do
login_as(user)
project.team << [user, role]
visit namespace_project_pipelines_settings_path(project.namespace, project)
end
context 'for developer' do
given(:role) { :developer }
scenario 'to be disallowed to view' do
expect(page.status_code).to eq(404)
end
end
context 'for master' do
given(:role) { :master }
scenario 'be allowed to change' do
fill_in('Test coverage parsing', with: 'coverage_regex')
click_on 'Save changes'
expect(page.status_code).to eq(200)
expect(page).to have_field('Test coverage parsing', with: 'coverage_regex')
end
end
end
require 'spec_helper'
 
feature "Pipelines", feature: true do
describe "Pipelines" do
include GitlabRoutingHelper
 
let(:project) { create(:empty_project) }
let(:user) { create(:user) }
let(:role) { :developer }
 
before do
login_as(user)
project.team << [user, role]
project.team << [user, :developer]
end
 
describe 'GET /:project/pipelines' do
Loading
Loading
@@ -209,30 +208,4 @@ feature "Pipelines", feature: true do
it { expect(page).to have_content('Reference not found') }
end
end
describe 'Pipelines settings' do
background do
visit settings_namespace_project_pipelines_path(project.namespace, project)
end
context 'for developer' do
given(:role) { :developer }
scenario 'to be disallowed to view' do
expect(page.status_code).to eq(404)
end
end
context 'for master' do
given(:role) { :master }
scenario 'be allowed to change' do
fill_in('Test coverage parsing', with: 'coverage_regex')
click_on 'Save changes'
expect(page.status_code).to eq(200)
expect(page).to have_field('Test coverage parsing', with: 'coverage_regex')
end
end
end
end
Loading
Loading
@@ -6,7 +6,7 @@ feature 'list of badges' do
project = create(:project)
project.team << [user, :master]
login_as(user)
visit settings_namespace_project_pipelines_path(project.namespace, project)
visit namespace_project_pipelines_settings_path(project.namespace, project)
end
 
scenario 'user displays list of badges' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment