lib/release_tools/metadata/compare_service.rb (31 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools module Metadata # Generates a `Metadata::Comparison` between a source version and a previous version. class CompareService include ::SemanticLogger::Loggable # @param source [ProductVersion] version that needs to be compared. # @param environment [String] where source version is deployed. def initialize(source:, environment:) @source = source @environment = environment end def with_latest_successful_deployment target_version = ProductVersion.from_metadata_sha(latest_successful_deployment.sha) Comparison.new(source: source, target: target_version) end private attr_reader :source, :environment def latest_successful_deployment Retriable.with_context(:api) do GitlabOpsClient.deployments( Project::Release::Metadata, environment, status: 'success', order_by: 'id', sort: 'desc', opts: { per_page: 1 } ).first end end end end end