lib/release_tools/tracker/merge_request_labeler.rb (29 lines of code) (raw):
# frozen_string_literal: true
module ReleaseTools
module Tracker
# Interface for adding of environment labels to deployed merge requests.
module MergeRequestLabeler
# environment - The name of the environment that was deployed to.
# deployments - An Array of `Tracker::Deployment` instances,
# containing data about a deployment.
def label_merge_requests(environment, deployments)
label = deployment_labels[environment]
unless label
logger.warn(
'Not updating merge requests as there is no label for this environment',
environment: environment
)
return
end
logger.info(
'Adding label to deployed merge requests',
environment: environment,
label: label
)
return if SharedStatus.dry_run?
ReleaseTools::Tracker::MergeRequestUpdater
.for_successful_deployments(deployments)
.add_label(label)
end
private
# Defines the labels to apply to a merge request when it is deployed.
#
# The keys are the environments deployed to, the values the label to
# apply.
#
# Example
#
# {
# 'gstg' => 'workflow::staging',
# 'gprd-cny' => 'workflow::canary',
# 'gprd' => 'workflow::production',
# }.freeze
def deployment_labels
raise NotImplementedError
end
end
end
end