class Buildkite::Trace::BuildFinishedEvent

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

Public Class Methods

new(data) click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 11
def initialize(data)
  @data = data
end

Public Instance Methods

build_branch() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 39
def build_branch
  @data.fetch("build", {}).fetch("branch", "")
end
build_created_at() click to toggle source
# 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_at() click to toggle source
# 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_id() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 27
def build_id
  @data.fetch("build", {}).fetch("id", "")
end
build_started_at() click to toggle source
# 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_url() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 31
def build_web_url
  @data.fetch("build", {}).fetch("web_url", "")
end
name() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 15
def name
  @data.fetch("event", "")
end
passed?() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 35
def passed?
  @data.fetch("build", {}).fetch("state", "") == "passed"
end
pipeline_name() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 19
def pipeline_name
  @data.fetch("pipeline", {}).fetch("name", "")
end
pipeline_slug() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 23
def pipeline_slug
  @data.fetch("pipeline", {}).fetch("slug", "")
end
to_span() click to toggle source
# 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

Private Instance Methods

duration_in_secs() click to toggle source
# File lib/buildkite/trace/build_finished_event.rb, line 76
def duration_in_secs
  build_finished_at.to_i - build_started_at.to_i
end