Class: Buildkite::Trace::BuildFinishedEvent

Inherits:
Object
  • Object
show all
Defined in:
lib/buildkite/trace/build_finished_event.rb

Overview

Value object that wraps raw buildkite webhook data and provides convenience methods for querying it

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ BuildFinishedEvent

Returns a new instance of BuildFinishedEvent.



11
12
13
# File 'lib/buildkite/trace/build_finished_event.rb', line 11

def initialize(data)
  @data = data
end

Instance Method Details

#build_branchObject



39
40
41
# File 'lib/buildkite/trace/build_finished_event.rb', line 39

def build_branch
  @data.fetch("build", {}).fetch("branch", "")
end

#build_created_atObject



43
44
45
46
# File 'lib/buildkite/trace/build_finished_event.rb', line 43

def build_created_at
  value = @data.fetch("build", {}).fetch("created_at", nil)
  value ? DateTime.parse(value).to_time : nil
end

#build_finished_atObject



53
54
55
56
# File 'lib/buildkite/trace/build_finished_event.rb', line 53

def build_finished_at
  value = @data.fetch("build", {}).fetch("finished_at", nil)
  value ? DateTime.parse(value).to_time : nil
end

#build_idObject



27
28
29
# File 'lib/buildkite/trace/build_finished_event.rb', line 27

def build_id
  @data.fetch("build", {}).fetch("id", "")
end

#build_started_atObject



48
49
50
51
# File 'lib/buildkite/trace/build_finished_event.rb', line 48

def build_started_at
  value = @data.fetch("build", {}).fetch("started_at", nil)
  value ? DateTime.parse(value).to_time : nil
end

#build_web_urlObject



31
32
33
# File 'lib/buildkite/trace/build_finished_event.rb', line 31

def build_web_url
  @data.fetch("build", {}).fetch("web_url", "")
end

#nameObject



15
16
17
# File 'lib/buildkite/trace/build_finished_event.rb', line 15

def name
  @data.fetch("event", "")
end

#passed?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/buildkite/trace/build_finished_event.rb', line 35

def passed?
  @data.fetch("build", {}).fetch("state", "") == "passed"
end

#pipeline_nameObject



19
20
21
# File 'lib/buildkite/trace/build_finished_event.rb', line 19

def pipeline_name
  @data.fetch("pipeline", {}).fetch("name", "")
end

#pipeline_slugObject



23
24
25
# File 'lib/buildkite/trace/build_finished_event.rb', line 23

def pipeline_slug
  @data.fetch("pipeline", {}).fetch("slug", "")
end

#to_spanObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/buildkite/trace/build_finished_event.rb', line 58

def to_span
  Span.new(
    trace_id: Digest::CRC64.checksum(build_id),
    span_id: Digest::CRC64.checksum(build_id) + 1,
    parent_id: nil,
    name: "build",
    resource: pipeline_slug,
    service: "buildkite",
    type: "custom",
    start: build_started_at.to_i * 1_000_000_000,
    duration: duration_in_secs * 1_000_000_000,
    metrics: {_sampling_priority_v1: 2},
    meta: {url: build_web_url, pipeline: pipeline_slug},
  )
end