in lib/release_tools/tasks/metrics/deployment_metrics/merge_request_lead_time.rb [13:58]
def execute(env, version)
product_version = ProductVersion.from_package_version(version)
if product_version.nil?
logger.warn("Product version not found", version: version)
return nil
end
sha = product_version[Project::GitlabEe.metadata_project_name].sha
deployments = find_deployments(env, sha, 'success')
if deployments.empty?
logger.warn("Deployments not found", product_version: product_version.version)
return nil
end
deployments.each do |deployment|
merge_requests = get_merge_requests(Project::GitlabEe, deployment.id)
env, stage = parse_env(deployment.environment.name)
merge_requests.each do |mr|
deployed_at = Time.parse(deployment.updated_at)
merged_at = Time.parse(mr.merged_at)
lead_time = deployed_at.to_i - merged_at.to_i
adjusted_lead_time = get_adjusted_lead_time(deployed_at, merged_at)
logger.info(
"Recorded MR lead time metric",
environment: env,
stage: stage,
id: mr.iid,
title: mr.title,
web_url: mr.web_url,
version: version
)
next if SharedStatus.dry_run?
metric.set("deployment_merge_request_lead_time_seconds", lead_time, labels: "#{env},#{stage},#{deployment.iid},#{mr.iid},#{version}")
metric.set("deployment_merge_request_adjusted_lead_time_seconds", adjusted_lead_time, labels: "#{env},#{stage},#{deployment.iid},#{mr.iid},#{version}")
end
end
end