debian-mirror-gitlab/app/controllers/projects/settings/ci_cd_controller.rb

113 lines
3.4 KiB
Ruby
Raw Normal View History

2017-08-17 22:00:37 +05:30
module Projects
module Settings
class CiCdController < Projects::ApplicationController
before_action :authorize_admin_pipeline!
2018-05-09 12:01:36 +05:30
before_action :define_variables
2017-08-17 22:00:37 +05:30
def show
2018-05-09 12:01:36 +05:30
end
def update
Projects::UpdateService.new(project, current_user, update_params).tap do |service|
result = service.execute
if result[:status] == :success
flash[:notice] = "Pipelines settings for '#{@project.name}' were successfully updated."
run_autodevops_pipeline(service)
redirect_to project_settings_ci_cd_path(@project)
else
render 'show'
end
end
2018-03-17 18:26:18 +05:30
end
def reset_cache
if ResetProjectCacheService.new(@project, current_user).execute
2018-05-09 12:01:36 +05:30
respond_to do |format|
format.json { head :ok }
end
2018-03-17 18:26:18 +05:30
else
2018-05-09 12:01:36 +05:30
respond_to do |format|
format.json { head :bad_request }
end
2018-03-17 18:26:18 +05:30
end
2017-08-17 22:00:37 +05:30
end
private
2018-05-09 12:01:36 +05:30
def update_params
params.require(:project).permit(
:runners_token, :builds_enabled, :build_allow_git_fetch,
:build_timeout_human_readable, :build_coverage_regex, :public_builds,
:auto_cancel_pending_pipelines, :ci_config_path,
auto_devops_attributes: [:id, :domain, :enabled]
)
end
def run_autodevops_pipeline(service)
return unless service.run_auto_devops_pipeline?
if @project.empty_repo?
flash[:warning] = "This repository is currently empty. A new Auto DevOps pipeline will be created after a new file has been pushed to a branch."
return
end
CreatePipelineWorker.perform_async(project.id, current_user.id, project.default_branch, :web, ignore_skip_ci: true, save_on_errors: false)
flash[:success] = "A new Auto DevOps pipeline has been created, go to <a href=\"#{project_pipelines_path(@project)}\">Pipelines page</a> for details".html_safe
end
def define_variables
define_runners_variables
define_secret_variables
define_triggers_variables
define_badges_variables
define_auto_devops_variables
end
2017-08-17 22:00:37 +05:30
def define_runners_variables
@project_runners = @project.runners.ordered
2018-10-15 14:42:47 +05:30
@assignable_runners = current_user
.ci_authorized_runners
.assignable_for(project)
.ordered
.page(params[:page]).per(20)
2018-05-09 12:01:36 +05:30
@shared_runners = ::Ci::Runner.shared.active
2018-10-15 14:42:47 +05:30
2017-08-17 22:00:37 +05:30
@shared_runners_count = @shared_runners.count(:all)
2018-10-15 14:42:47 +05:30
@group_runners = ::Ci::Runner.belonging_to_parent_group_of_project(@project.id)
2017-08-17 22:00:37 +05:30
end
def define_secret_variables
2018-05-09 12:01:36 +05:30
@variable = ::Ci::Variable.new(project: project)
2017-09-10 17:25:29 +05:30
.present(current_user: current_user)
@variables = project.variables.order_key_asc
.map { |variable| variable.present(current_user: current_user) }
2017-08-17 22:00:37 +05:30
end
def define_triggers_variables
@triggers = @project.triggers
2018-05-09 12:01:36 +05:30
@trigger = ::Ci::Trigger.new
2017-08-17 22:00:37 +05:30
end
def define_badges_variables
@ref = params[:ref] || @project.default_branch || 'master'
2017-09-10 17:25:29 +05:30
@badges = [Gitlab::Badge::Pipeline::Status,
2017-08-17 22:00:37 +05:30
Gitlab::Badge::Coverage::Report]
@badges.map! do |badge|
badge.new(@project, @ref).metadata
end
end
2018-03-17 18:26:18 +05:30
def define_auto_devops_variables
@auto_devops = @project.auto_devops || ProjectAutoDevops.new
end
2017-08-17 22:00:37 +05:30
end
end
end