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