Skip to content
Snippets Groups Projects

Fix n plus one issue ci build dast profile

All threads resolved!
2 files
+ 14
6
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -6,7 +6,8 @@ module Profiles
@@ -6,7 +6,8 @@ module Profiles
class CreateAssociationsService < BaseProjectService
class CreateAssociationsService < BaseProjectService
include ::Gitlab::Ci::Pipeline::Chain::Helpers
include ::Gitlab::Ci::Pipeline::Chain::Helpers
def initialize(builds)
def initialize(project:, current_user: nil, params: {}, builds: [])
 
super(project: project, current_user: current_user, params: params)
@builds = builds
@builds = builds
@dast_site_profiles_builds = []
@dast_site_profiles_builds = []
@dast_scanner_profiles_builds = []
@dast_scanner_profiles_builds = []
@@ -19,16 +20,21 @@ def execute
@@ -19,16 +20,21 @@ def execute
@builds.each do |build|
@builds.each do |build|
next unless build.is_a?(::Ci::Build)
next unless build.is_a?(::Ci::Build)
dast_site_profile = find_dast_site_profiles(project.id).find { |dsp| dsp.name == build.options[:dast_configuration][:site_profile] }
if build.options.dig(:dast_configuration, :site_profile).present?
@dast_site_profiles_builds.append({ ci_build_id: build.id, dast_site_profile_id: dast_site_profile.id }) if has_permission?(dast_site_profile, build.options[:dast_configuration][:site_profile])
dast_site_profile = find_dast_site_profiles(project.id).find { |dsp| dsp.name == build.options[:dast_configuration][:site_profile] }
 
@dast_site_profiles_builds.append({ ci_build_id: build.id, dast_site_profile_id: dast_site_profile.id }) if has_permission?(dast_site_profile, build.options[:dast_configuration][:site_profile])
 
end
dast_scanner_profile = find_dast_scanner_profiles(project.id).find { |dsp| dsp.name == build.options[:dast_configuration][:scanner_profile] }
if build.options.dig(:dast_configuration, :scanner_profile).present?
@dast_scanner_profiles_builds.append({ ci_build_id: build.id, dast_scanner_profile_id: dast_scanner_profile.id }) if has_permission?(dast_scanner_profile, build.options[:dast_configuration][:scanner_profile])
dast_scanner_profile = find_dast_scanner_profiles(project.id).find { |dsp| dsp.name == build.options[:dast_configuration][:scanner_profile] }
 
@dast_scanner_profiles_builds.append({ ci_build_id: build.id, dast_scanner_profile_id: dast_scanner_profile.id }) if has_permission?(dast_scanner_profile, build.options[:dast_configuration][:scanner_profile])
 
end
end
end
return ServiceResponse.error(message: @errors) unless @errors.empty?
return ServiceResponse.error(message: @errors) unless @errors.empty?
insert_builds
insert_builds
 
ServiceResponse.success(payload: @builds)
end
end
private
private
Loading