37 lines
1 KiB
Ruby
37 lines
1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Security
|
||
|
module LatestPipelineInformation
|
||
|
private
|
||
|
|
||
|
def scanner_enabled?(scan_type)
|
||
|
latest_builds_reports.include?(scan_type)
|
||
|
end
|
||
|
|
||
|
def latest_builds_reports(only_successful_builds: false)
|
||
|
strong_memoize("latest_builds_reports_#{only_successful_builds}") do
|
||
|
builds = latest_security_builds
|
||
|
builds = builds.select { |build| build.status == 'success' } if only_successful_builds
|
||
|
builds.flat_map do |build|
|
||
|
build.options[:artifacts][:reports].keys
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def latest_security_builds
|
||
|
return [] unless latest_default_branch_pipeline
|
||
|
|
||
|
::Security::SecurityJobsFinder.new(pipeline: latest_default_branch_pipeline).execute +
|
||
|
::Security::LicenseComplianceJobsFinder.new(pipeline: latest_default_branch_pipeline).execute
|
||
|
end
|
||
|
|
||
|
def latest_default_branch_pipeline
|
||
|
strong_memoize(:pipeline) { latest_pipeline }
|
||
|
end
|
||
|
|
||
|
def auto_devops_source?
|
||
|
latest_default_branch_pipeline&.auto_devops_source?
|
||
|
end
|
||
|
end
|
||
|
end
|