in lib/gitlab/feature_flag_alert/monitor.rb [14:68]
def run
update_repository
current_milestone = Milestone.new(gitlab.current_milestone["title"])
puts "Current milestone: #{current_milestone}"
flags_needing_action_by_group = feature_flags
.needing_action(current_milestone)
.group_by(&:group)
flags_overdue_by_group = feature_flags
.overdue(current_milestone)
.group_by(&:group)
groups = (flags_needing_action_by_group.keys + flags_overdue_by_group.keys).uniq
flags_by_group = groups.reduce({}) do |flags, group|
flags.update(
group => {
needs_action: flags_needing_action_by_group.fetch(group, []),
overdue: flags_overdue_by_group.fetch(group, [])
}
)
end
flags_by_group.map do |group, flags|
next if group.nil?
flags_needing_action = flags[:needs_action]
flags_overdue = flags[:overdue]
puts "Feature flags needing action for #{group}:"
flags_needing_action.each do |flag|
puts " * #{flag.name} | #{flag.type} | #{flag.milestone} | #{flag.default_enabled} | #{flag.introduced_by_url} | #{flag.rollout_issue_url}"
end
puts ""
puts "Feature flags overdue for #{group}:"
flags_overdue.each do |flag|
puts " * #{flag.name} | #{flag.milestone} | #{flag.default_enabled} | #{flag.rollout_issue_url}"
end
puts ""
issue = build_issue(group, flags)
handle_issue(issue)
break issue if Env.create_issue_test_mode?
issue
end
end