lib/release_tools/tasks/metrics/track_deployment_started.rb (34 lines of code) (raw):
# frozen_string_literal: true
module ReleaseTools
module Tasks
module Metrics
# Publish metrics related to deployment start time
class TrackDeploymentStarted
def execute
client.inc("deployment_started_total", labels: environment)
client.inc("deployment_can_rollback_total", labels: environment) if can_rollback?
client.set("deployment_started", 1, labels: labels)
end
private
def client
@client ||= ReleaseTools::Metrics::Client.new
end
def environment
ENV.fetch("DEPLOY_ENVIRONMENT")
end
def deploy_version
ENV.fetch("DEPLOY_VERSION")
end
def labels
"#{environment},#{deploy_version}"
end
def can_rollback?
Rollback::CompareService.new(
current: deploy_version,
environment: environment
).execute.safe?
rescue ArgumentError
false
end
end
end
end
end