lib/release_tools/internal_release/dedicated_issue.rb (80 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools module InternalRelease class DedicatedIssue < ReleaseTools::Issue include ::SemanticLogger::Loggable include ReleaseTools::InternalRelease::IssueHelper RELEASE_TYPE = 'internal' def initialize(*args) super @internal_versions = versions end def title "Internal release: #{internal_versions_info}" end def confidential? true end def labels [ 'internal releases', 'group::GitLab Dedicated', 'severity::1' ].join(', ') end def internal_versions_info internal_versions.join(', ') end def release_versions_info internal_versions.map do |version| ReleaseTools::Version.new(version).to_minor.to_s end.join(', ') end def due_date internal_release_task_issue.due_date end def planned_due_date due_date.presence || 'TBD - Release managers will provide an estimated date' end def assignees [ '11218142', # o-lluch - Dedicated EA manager '20257324', # denhams - Dedicated EA manager '25360079' # mckgl - Dedicated US PubSec manager ] end def project ReleaseTools::Project::Infrastructure::GitlabDedicated::Team end def security_issues task_issue_links.map(&:web_url).join(', ') end def release_managers_usernames release_managers.map do |release_manager| "@#{release_manager.username}" end.join(' ') end private attr_reader :internal_versions def client ReleaseTools::GitlabClient end def template_path File.expand_path('../../../templates/internal_release/dedicated_issue.md.erb', __dir__) end def task_issue_links @task_issue_links ||= Retriable.with_context(:api) do client.issue_links(ReleaseTools::Project::Release::Tasks, internal_release_task_issue.iid) end end def release_managers schedule.active_release_managers rescue ReleaseManagers::Schedule::VersionNotFoundError logger.fatal('Could not find active release managers') nil end def schedule @schedule ||= ReleaseManagers::Schedule.new end end end end