lib/release_tools/slack/internal_release/dedicated_start_notifier.rb (67 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools module Slack module InternalRelease class DedicatedStartNotifier include ::SemanticLogger::Loggable include ReleaseTools::InternalRelease::IssueHelper def initialize(internal_versions) @internal_versions = internal_versions end def execute logger.info("Notifying Dedicated about start of internal releases", internal_versions: internal_versions) send_notification end private attr_reader :internal_versions def send_notification message = <<~BODY :mega: :security-tanuki: Hello, the internal release has started targeting #{due_date} as the due date. We are preparing the following versions: #{internal_versions_message}. A message will be posted to this channel when the internal release is complete and the package is available in the `pre-release` channel. There is a Dedicated tracker issue that has been created: #{dedicated_issue_url} Notifying Dedicated managers: #{dedicated_managers} BODY slack_channels = [ ReleaseTools::Slack::G_DEDICATED_TEAM, ReleaseTools::Slack::G_DEDICATED_ENVIRONMENT_AUTOMATION_TEAM, ReleaseTools::Slack::G_DEDICATED_US_PUBSEC ] return if SharedStatus.dry_run? slack_channels.each do |channel| Retriable.retriable do ReleaseTools::Slack::ChatopsNotification.fire_hook( text: "Internal release is starting.", channel: channel, blocks: [ { type: 'section', text: { type: 'mrkdwn', text: message } } ] ) end end end def dedicated_managers [ '@oriol', # Dedicated EA manager '@denham', # Dedicated EA manager '@mkirkevold' # Dedicated US PubSec manager ].join(', ') end def internal_versions_message internal_versions.map(&:to_s).join(', ') end def due_date internal_release_dedicated_issue.due_date end def dedicated_issue_url internal_release_dedicated_issue.web_url end end end end end