Merge branch 'allow-to-disable-ci' into 'master'
Allow to disable GitLab CI Added simple config option to disable GitLab CI It makes all CI related requests to return 404 /cc @dzaporozhets @jacobvosmaer @vsizov See merge request !1340
This commit is contained in:
commit
8b05abe816
14 changed files with 49 additions and 7 deletions
|
@ -56,6 +56,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
|
|||
:restricted_signup_domains_raw,
|
||||
:version_check_enabled,
|
||||
:user_oauth_applications,
|
||||
:ci_enabled,
|
||||
restricted_visibility_levels: [],
|
||||
import_sources: []
|
||||
)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
module Ci
|
||||
class ApplicationController < ::ApplicationController
|
||||
before_action :check_enable_flag!
|
||||
|
||||
def self.railtie_helpers_paths
|
||||
"app/helpers/ci"
|
||||
end
|
||||
|
@ -8,6 +10,13 @@ module Ci
|
|||
|
||||
private
|
||||
|
||||
def check_enable_flag!
|
||||
unless current_application_settings.ci_enabled
|
||||
redirect_to(disabled_ci_projects_path)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
def authenticate_public_page!
|
||||
unless project.public
|
||||
authenticate_user!
|
||||
|
|
|
@ -5,13 +5,17 @@ module Ci
|
|||
before_action :authenticate_user!, except: [:build, :badge, :index, :show]
|
||||
before_action :authenticate_public_page!, only: :show
|
||||
before_action :project, only: [:build, :integration, :show, :badge, :edit, :update, :destroy, :toggle_shared_runners, :dumped_yaml]
|
||||
before_action :authorize_access_project!, except: [:build, :badge, :index, :show, :new, :create]
|
||||
before_action :authorize_access_project!, except: [:build, :badge, :index, :show, :new, :create, :disabled]
|
||||
before_action :authorize_manage_project!, only: [:edit, :integration, :update, :destroy, :toggle_shared_runners, :dumped_yaml]
|
||||
before_action :authenticate_token!, only: [:build]
|
||||
before_action :no_cache, only: [:badge]
|
||||
skip_before_action :check_enable_flag!, only: [:disabled]
|
||||
protect_from_forgery except: :build
|
||||
|
||||
layout 'ci/project', except: :index
|
||||
layout 'ci/project', except: [:index, :disabled]
|
||||
|
||||
def disabled
|
||||
end
|
||||
|
||||
def index
|
||||
@limit, @offset = (params[:limit] || PROJECTS_BATCH).to_i, (params[:offset] || 0).to_i
|
||||
|
|
|
@ -83,7 +83,8 @@ class ApplicationSetting < ActiveRecord::Base
|
|||
default_project_visibility: Settings.gitlab.default_projects_features['visibility_level'],
|
||||
default_snippet_visibility: Settings.gitlab.default_projects_features['visibility_level'],
|
||||
restricted_signup_domains: Settings.gitlab['restricted_signup_domains'],
|
||||
import_sources: ['github','bitbucket','gitlab','gitorious','google_code','fogbugz','git']
|
||||
import_sources: ['github','bitbucket','gitlab','gitorious','google_code','fogbugz','git'],
|
||||
ci_enabled: Settings.gitlab_ci['enabled']
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -124,5 +124,14 @@
|
|||
= f.text_area :help_page_text, class: 'form-control', rows: 4
|
||||
.help-block Markdown enabled
|
||||
|
||||
%fieldset
|
||||
%legend Continuous Integration
|
||||
.form-group
|
||||
.col-sm-offset-2.col-sm-10
|
||||
.checkbox
|
||||
= f.label :ci_enabled do
|
||||
= f.check_box :ci_enabled
|
||||
Enable Continuous Integration
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Save', class: 'btn btn-primary'
|
||||
|
|
1
app/views/ci/projects/disabled.html.haml
Normal file
1
app/views/ci/projects/disabled.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
Continuous Integration has been disabled. Please ask your administrator to enable it.
|
|
@ -2,7 +2,7 @@
|
|||
%html{ lang: "en"}
|
||||
= render 'layouts/head'
|
||||
%body{class: "ci-body #{user_application_theme}", 'data-page' => body_data_page}
|
||||
- header_title = "CI Projects"
|
||||
- header_title = "Continuous Integration"
|
||||
- if current_user
|
||||
= render "layouts/header/default", title: header_title
|
||||
- else
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
%span
|
||||
Merge Requests
|
||||
%span.count= current_user.assigned_merge_requests.opened.count
|
||||
= nav_link(path: 'ci/projects#index') do
|
||||
= nav_link(path: ['ci/projects#index', 'ci/projects#disabled']) do
|
||||
= link_to ci_projects_path, title: 'Continuous Integration', data: {placement: 'right'} do
|
||||
= icon('building fw')
|
||||
%span
|
||||
|
|
|
@ -178,6 +178,7 @@ Settings.gitlab['import_sources'] ||= ['github','bitbucket','gitlab','gitorious'
|
|||
# CI
|
||||
#
|
||||
Settings['gitlab_ci'] ||= Settingslogic.new({})
|
||||
Settings.gitlab_ci['enabled'] = true if Settings.gitlab_ci['enabled'].nil?
|
||||
Settings.gitlab_ci['all_broken_builds'] = true if Settings.gitlab_ci['all_broken_builds'].nil?
|
||||
Settings.gitlab_ci['add_pusher'] = false if Settings.gitlab_ci['add_pusher'].nil?
|
||||
Settings.gitlab_ci['url'] ||= Settings.send(:build_gitlab_ci_url)
|
||||
|
|
|
@ -12,7 +12,7 @@ Gitlab::Application.routes.draw do
|
|||
resources :projects do
|
||||
collection do
|
||||
post :add
|
||||
get :gitlab
|
||||
get :disabled
|
||||
end
|
||||
|
||||
member do
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class AddCiEnabledToApplicationSettings < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :application_settings, :ci_enabled, :boolean, null: false, default: true
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20150916145038) do
|
||||
ActiveRecord::Schema.define(version: 20150918084513) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -46,6 +46,7 @@ ActiveRecord::Schema.define(version: 20150916145038) do
|
|||
t.integer "session_expire_delay", default: 10080, null: false
|
||||
t.text "import_sources"
|
||||
t.text "help_page_text"
|
||||
t.boolean "ci_enabled", default: true, null: false
|
||||
end
|
||||
|
||||
create_table "audit_events", force: true do |t|
|
||||
|
|
|
@ -23,6 +23,10 @@ module Ci
|
|||
rack_response({ 'message' => '500 Internal Server Error' }, 500)
|
||||
end
|
||||
|
||||
before do
|
||||
check_enable_flag!
|
||||
end
|
||||
|
||||
format :json
|
||||
|
||||
helpers Helpers
|
||||
|
|
|
@ -3,6 +3,12 @@ module Ci
|
|||
module Helpers
|
||||
UPDATE_RUNNER_EVERY = 60
|
||||
|
||||
def check_enable_flag!
|
||||
unless current_application_settings.ci_enabled
|
||||
render_api_error!('400 (Bad request) CI is disabled', 400)
|
||||
end
|
||||
end
|
||||
|
||||
def authenticate_runners!
|
||||
forbidden! unless params[:token] == GitlabCi::REGISTRATION_TOKEN
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue