Class: Buildkite::Trace::JobFinishedEvent

Inherits:
Object
  • Object
show all
Defined in:
lib/buildkite/trace/job_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) ⇒ JobFinishedEvent

Returns a new instance of JobFinishedEvent.



10
11
12
# File 'lib/buildkite/trace/job_finished_event.rb', line 10

def initialize(data)
  @data = data
end

Instance Method Details

#agent_hostnameObject



52
53
54
# File 'lib/buildkite/trace/job_finished_event.rb', line 52

def agent_hostname
  @data.fetch("job", {}).fetch("agent",{}).fetch("hostname","")
end

#agent_nameObject



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

def agent_name
  @data.fetch("job", {}).fetch("agent",{}).fetch("name","")
end

#build_branchObject



60
61
62
# File 'lib/buildkite/trace/job_finished_event.rb', line 60

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

#build_idObject



56
57
58
# File 'lib/buildkite/trace/job_finished_event.rb', line 56

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

#job_finished_atObject



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

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

#job_idObject



18
19
20
# File 'lib/buildkite/trace/job_finished_event.rb', line 18

def job_id
  @data.fetch("job", {}).fetch("id","")
end

#job_nameObject



22
23
24
# File 'lib/buildkite/trace/job_finished_event.rb', line 22

def job_name
  @data.fetch("job", {}).fetch("name","")
end

#job_slugObject



26
27
28
# File 'lib/buildkite/trace/job_finished_event.rb', line 26

def job_slug
  slugorize(job_name)
end

#job_started_atObject



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

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

#job_stateObject



30
31
32
# File 'lib/buildkite/trace/job_finished_event.rb', line 30

def job_state
  @data.fetch("job", {}).fetch("state","")
end

#job_web_urlObject



34
35
36
# File 'lib/buildkite/trace/job_finished_event.rb', line 34

def job_web_url
  @data.fetch("job", {}).fetch("web_url","")
end

#nameObject



14
15
16
# File 'lib/buildkite/trace/job_finished_event.rb', line 14

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

#pipeline_nameObject



64
65
66
# File 'lib/buildkite/trace/job_finished_event.rb', line 64

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

#pipeline_slugObject



68
69
70
# File 'lib/buildkite/trace/job_finished_event.rb', line 68

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

#to_spanObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/buildkite/trace/job_finished_event.rb', line 72

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