Skip to content
Snippets Groups Projects

Fix n plus one issue ci build dast profile

All threads resolved!
2 files
+ 9
5
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -11,24 +11,26 @@ def initialize(project:, current_user: nil, params: {})
@@ -11,24 +11,26 @@ def initialize(project:, current_user: nil, params: {})
@builds = params[:builds] || []
@builds = params[:builds] || []
@dast_site_profiles_builds = []
@dast_site_profiles_builds = []
@dast_scanner_profiles_builds = []
@dast_scanner_profiles_builds = []
 
@project = params[:project]
@errors = []
@errors = []
end
end
def execute
def execute
return ServiceResponse.error(message: _('Insufficient permissions for dast_configuration keyword')) unless allowed?
return ServiceResponse.error(message: _('Insufficient permissions for dast_configuration keyword')) unless allowed?
project = @builds.first.project
dast_site_profiles = find_dast_site_profiles(@project.id)
 
dast_scanner_profiles = find_dast_scanner_profiles(@project.id)
@builds.each do |build|
@builds.each do |build|
next unless build.is_a?(::Ci::Build)
next unless build.is_a?(::Ci::Build)
if build.options.dig(:dast_configuration, :site_profile).present?
if build.options.dig(:dast_configuration, :site_profile).present?
dast_site_profile = find_dast_site_profiles(project.id).find { |dsp| dsp.name == build.options[:dast_configuration][:site_profile] }
dast_site_profile = dast_site_profiles.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])
@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
end
if build.options.dig(:dast_configuration, :scanner_profile).present?
if build.options.dig(:dast_configuration, :scanner_profile).present?
dast_scanner_profile = find_dast_scanner_profiles(project.id).find { |dsp| dsp.name == build.options[:dast_configuration][:scanner_profile] }
dast_scanner_profile = dast_scanner_profiles.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])
@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
end
Loading