lib/release_tools/deployments/blocker_issue.rb (57 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools module Deployments class BlockerIssue def initialize(data) @data = data end def title "#{data.web_url}+" end def root_cause return unless root_cause_label "~\"#{root_cause_label}\"" end def root_cause_label return "Change-request" if labels.include?('change') labels .detect { |label| label.include?('RootCause') } end def with_deploys_blocked_label? labels.any? { |label| label.include?('Deploys-blocked-') } end def hours_gstg_blocked hrs_blocked(environment: 'gstg') end def hours_gprd_blocked hrs_blocked(environment: 'gprd') end def created_at Time.parse(data.created_at) end def ended_at duration = [hours_gprd_blocked, hours_gstg_blocked].max created_at + duration.hours end def need_to_annotate? !flaky_test? && !less_or_equal_30m? end attr_reader :data private def hrs_blocked(environment:) labels .grep(/Deploys-blocked-#{environment}/) .first&.gsub(/[^0-9.]/, '') .to_f end def labels data.labels end def less_or_equal_30m? (ended_at - created_at).to_i <= 30.minute.to_i end def flaky_test? root_cause_label&.include?('Flaky-Test') end end end end