Commit 8bda0a89 authored by Nick Thomas's avatar Nick Thomas

Merge branch 'reduce-diff-in-ci-create_pipeline_service' into 'master'

[EE] Reduce the diff with CE in Ci::CreatePipelineService

See merge request gitlab-org/gitlab-ee!9378
parents 9d836c75 787c060f
......@@ -7,17 +7,17 @@ module Ci
CreateError = Class.new(StandardError)
SEQUENCE = [Gitlab::Ci::Pipeline::Chain::Build,
EE::Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs,
Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs,
Gitlab::Ci::Pipeline::Chain::Validate::Abilities,
Gitlab::Ci::Pipeline::Chain::Validate::Repository,
Gitlab::Ci::Pipeline::Chain::Validate::Config,
Gitlab::Ci::Pipeline::Chain::Skip,
EE::Gitlab::Ci::Pipeline::Chain::Limit::Size,
Gitlab::Ci::Pipeline::Chain::Limit::Size,
Gitlab::Ci::Pipeline::Chain::Populate,
Gitlab::Ci::Pipeline::Chain::Create,
EE::Gitlab::Ci::Pipeline::Chain::Limit::Activity].freeze
Gitlab::Ci::Pipeline::Chain::Limit::Activity].freeze
def execute(source, ignore_skip_ci: false, save_on_errors: true, trigger_request: nil, schedule: nil, merge_request: nil, mirror_update: false, &block)
def execute(source, ignore_skip_ci: false, save_on_errors: true, trigger_request: nil, schedule: nil, merge_request: nil, **options, &block)
@pipeline = Ci::Pipeline.new
command = Gitlab::Ci::Pipeline::Chain::Command.new(
......@@ -36,11 +36,7 @@ module Ci
project: project,
current_user: current_user,
push_options: params[:push_options],
# EE specific
allow_mirror_update: mirror_update,
chat_data: params[:chat_data]
)
**extra_options(**options))
sequence = Gitlab::Ci::Pipeline::Chain::Sequence
.new(pipeline, command, SEQUENCE)
......@@ -111,5 +107,11 @@ module Ci
pipeline.project.source_of_merge_requests.opened.where(source_branch: pipeline.ref)
end
# rubocop: enable CodeReuse/ActiveRecord
def extra_options
{} # overriden in EE
end
end
end
Ci::CreatePipelineService.prepend(EE::Ci::CreatePipelineService)
# frozen_string_literal: true
module EE
module Ci
module CreatePipelineService
extend ::Gitlab::Utils::Override
override :extra_options
def extra_options(mirror_update: false)
{
allow_mirror_update: mirror_update,
chat_data: params[:chat_data]
}
end
end
end
end
......@@ -6,10 +6,14 @@ module EE
module Pipeline
module Chain
module Limit
class Activity < ::Gitlab::Ci::Pipeline::Chain::Base
module Activity
extend ::Gitlab::Utils::Override
include ::Gitlab::Ci::Pipeline::Chain::Helpers
include ::Gitlab::OptimisticLocking
attr_reader :limit
private :limit
def initialize(*)
super
......@@ -17,16 +21,18 @@ module EE
.new(project.namespace, pipeline.project)
end
override :perform!
def perform!
return unless @limit.exceeded?
return unless limit.exceeded?
retry_optimistic_lock(@pipeline) do
@pipeline.drop!(:activity_limit_exceeded)
retry_optimistic_lock(pipeline) do
pipeline.drop!(:activity_limit_exceeded)
end
end
override :break?
def break?
@limit.exceeded?
limit.exceeded?
end
end
end
......
......@@ -6,9 +6,13 @@ module EE
module Pipeline
module Chain
module Limit
class Size < ::Gitlab::Ci::Pipeline::Chain::Base
module Size
extend ::Gitlab::Utils::Override
include ::Gitlab::Ci::Pipeline::Chain::Helpers
attr_reader :limit
private :limit
def initialize(*)
super
......@@ -16,18 +20,20 @@ module EE
.new(project.namespace, pipeline)
end
override :perform!
def perform!
return unless @limit.exceeded?
return unless limit.exceeded?
if @command.save_incompleted
@pipeline.drop!(:size_limit_exceeded)
if command.save_incompleted
pipeline.drop!(:size_limit_exceeded)
end
error(@limit.message)
error(limit.message)
end
override :break?
def break?
@limit.exceeded?
limit.exceeded?
end
end
end
......
......@@ -5,7 +5,10 @@ module EE
module Ci
module Pipeline
module Chain
class RemoveUnwantedChatJobs < ::Gitlab::Ci::Pipeline::Chain::Base
module RemoveUnwantedChatJobs
extend ::Gitlab::Utils::Override
override :perform!
def perform!
return unless pipeline.config_processor && pipeline.chat?
......@@ -15,10 +18,6 @@ module EE
name.to_s == command.chat_data[:command].to_s
end
end
def break?
false
end
end
end
end
......
require 'spec_helper'
describe EE::Gitlab::Ci::Pipeline::Chain::Limit::Activity do
describe ::Gitlab::Ci::Pipeline::Chain::Limit::Activity do
set(:namespace) { create(:namespace) }
set(:project) { create(:project, namespace: namespace) }
set(:user) { create(:user) }
......
require 'spec_helper'
describe EE::Gitlab::Ci::Pipeline::Chain::Limit::Size do
describe ::Gitlab::Ci::Pipeline::Chain::Limit::Size do
set(:namespace) { create(:namespace) }
set(:project) { create(:project, :repository, namespace: namespace) }
set(:user) { create(:user) }
......
require 'spec_helper'
describe EE::Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs do
describe ::Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs do
let(:project) { create(:project, :repository) }
let(:pipeline) do
......
# frozen_string_literal: true
module Gitlab
module Ci
module Pipeline
module Chain
module Limit
class Activity < Chain::Base
def perform!
# to be overriden in EE
end
def break?
false # to be overriden in EE
end
end
end
end
end
end
end
Gitlab::Ci::Pipeline::Chain::Limit::Activity.prepend(EE::Gitlab::Ci::Pipeline::Chain::Limit::Activity)
# frozen_string_literal: true
module Gitlab
module Ci
module Pipeline
module Chain
module Limit
class Size < Chain::Base
def perform!
# to be overriden in EE
end
def break?
false # to be overriden in EE
end
end
end
end
end
end
end
Gitlab::Ci::Pipeline::Chain::Limit::Size.prepend(EE::Gitlab::Ci::Pipeline::Chain::Limit::Size)
# frozen_string_literal: true
module Gitlab
module Ci
module Pipeline
module Chain
class RemoveUnwantedChatJobs < Chain::Base
def perform!
# to be overriden in EE
end
def break?
false
end
end
end
end
end
end
Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs.prepend(EE::Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment