97 lines
3.1 KiB
Ruby
97 lines
3.1 KiB
Ruby
module Travis
|
|
module Api
|
|
module Serialize
|
|
module V0
|
|
module Event
|
|
class Build
|
|
include Formats
|
|
|
|
attr_reader :build, :repository, :request, :commit, :options
|
|
|
|
def initialize(build, options = {})
|
|
@build = build
|
|
@repository = build.repository
|
|
@request = build.request
|
|
@commit = build.commit
|
|
# @options = options
|
|
end
|
|
|
|
def data(extra = {})
|
|
{
|
|
'repository' => repository_data,
|
|
'request' => request_data,
|
|
'commit' => commit_data,
|
|
'build' => build_data,
|
|
'jobs' => build.matrix.map { |job| job_data(job) }
|
|
}
|
|
end
|
|
|
|
private
|
|
|
|
def build_data
|
|
{
|
|
'id' => build.id,
|
|
'repository_id' => build.repository_id,
|
|
'commit_id' => build.commit_id,
|
|
'number' => build.number,
|
|
'pull_request' => build.pull_request?,
|
|
'pull_request_number' => build.pull_request_number,
|
|
'config' => build.config.try(:except, :source_key),
|
|
'state' => build.state.to_s,
|
|
'previous_state' => build.previous_state.to_s,
|
|
'started_at' => format_date(build.started_at),
|
|
'finished_at' => format_date(build.finished_at),
|
|
'duration' => build.duration,
|
|
'job_ids' => build.matrix_ids
|
|
}
|
|
end
|
|
|
|
def repository_data
|
|
{
|
|
'id' => repository.id,
|
|
'key' => repository.key.try(:public_key),
|
|
'slug' => repository.slug,
|
|
'name' => repository.name,
|
|
'owner_email' => repository.owner_email,
|
|
'owner_avatar_url' => repository.owner.try(:avatar_url)
|
|
}
|
|
end
|
|
|
|
def request_data
|
|
{
|
|
'token' => request.token,
|
|
'head_commit' => (request.head_commit || '')
|
|
}
|
|
end
|
|
|
|
def commit_data
|
|
{
|
|
'id' => commit.id,
|
|
'sha' => commit.commit,
|
|
'branch' => commit.branch,
|
|
'message' => commit.message,
|
|
'committed_at' => format_date(commit.committed_at),
|
|
'author_name' => commit.author_name,
|
|
'author_email' => commit.author_email,
|
|
'committer_name' => commit.committer_name,
|
|
'committer_email' => commit.committer_email,
|
|
'compare_url' => commit.compare_url,
|
|
}
|
|
end
|
|
|
|
def job_data(job)
|
|
{
|
|
'id' => job.id,
|
|
'number' => job.number,
|
|
'state' => job.state.to_s,
|
|
'tags' => job.tags
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|