diff --git a/vendor/travis-core/lib/travis/api.rb b/vendor/travis-core/lib/travis/api.rb index 35011de0..6c1da60e 100644 --- a/vendor/travis-core/lib/travis/api.rb +++ b/vendor/travis-core/lib/travis/api.rb @@ -1,6 +1,7 @@ module Travis module Api require 'travis/api/formats' + require 'travis/api/v0' require 'travis/api/v1' require 'travis/api/v2' diff --git a/vendor/travis-core/lib/travis/api/README.markdown b/vendor/travis-core/lib/travis/api/README.markdown index a6f64703..0ca565b1 100644 --- a/vendor/travis-core/lib/travis/api/README.markdown +++ b/vendor/travis-core/lib/travis/api/README.markdown @@ -1,6 +1,10 @@ This directory contains serializers for events and models. +- `v0/event`: Payloads used by [`Travis::Event::Handler`](../event/handler.rb). These are the payloads that the [addons](../addons) will get. +- `v0/pusher`: Payloads used to send events to the web UI using Pusher. +- `v0/worker`: Payloads sent to [travis-worker](https://github.com/travis-ci/travis-worker). + - `v1/http`: Payloads for the v1 [API](https://github.com/travis-ci/travis-api). - `v1/webhook`: Payloads for the webhook notifications. -- `v2/http`: Payloads for the v2 [API](https://github.com/travis-ci/travis-api). +- `v2/http`: Payloads for the v2 [API](https://github.com/travis-ci/travis-api). \ No newline at end of file diff --git a/vendor/travis-core/lib/travis/api/v0.rb b/vendor/travis-core/lib/travis/api/v0.rb new file mode 100644 index 00000000..d21ff344 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0.rb @@ -0,0 +1,11 @@ +module Travis + module Api + # V0 is an internal api that we can change at any time + module V0 + require 'travis/api/v0/event' + require 'travis/api/v0/notification' + require 'travis/api/v0/pusher' + require 'travis/api/v0/worker' + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/event.rb b/vendor/travis-core/lib/travis/api/v0/event.rb new file mode 100644 index 00000000..efd03a8d --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/event.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Event + require 'travis/api/v0/event/build' + require 'travis/api/v0/event/job' + end + end + end +end + + diff --git a/vendor/travis-core/lib/travis/api/v0/event/build.rb b/vendor/travis-core/lib/travis/api/v0/event/build.rb new file mode 100644 index 00000000..797d399a --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/event/build.rb @@ -0,0 +1,95 @@ +module Travis + module Api + 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 + + diff --git a/vendor/travis-core/lib/travis/api/v0/event/job.rb b/vendor/travis-core/lib/travis/api/v0/event/job.rb new file mode 100644 index 00000000..ddbc58e8 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/event/job.rb @@ -0,0 +1,38 @@ +module Travis + module Api + module V0 + module Event + class Job + include Formats + + attr_reader :job + + def initialize(job, options = {}) + @job = job + # @options = options + end + + def data(extra = {}) + { + 'job' => job_data, + } + end + + private + + def job_data + { + 'queue' => job.queue, + 'created_at' => job.created_at, + 'started_at' => job.started_at, + 'finished_at' => job.finished_at, + } + end + end + end + end + end +end + + + diff --git a/vendor/travis-core/lib/travis/api/v0/notification.rb b/vendor/travis-core/lib/travis/api/v0/notification.rb new file mode 100644 index 00000000..45d37770 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/notification.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Notification + require 'travis/api/v0/notification/build' + require 'travis/api/v0/notification/repository' + require 'travis/api/v0/notification/user' + end + end + end +end + diff --git a/vendor/travis-core/lib/travis/api/v0/notification/build.rb b/vendor/travis-core/lib/travis/api/v0/notification/build.rb new file mode 100644 index 00000000..27b00504 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/notification/build.rb @@ -0,0 +1,28 @@ +module Travis + module Api + module V0 + module Notification + class Build + attr_reader :build + + def initialize(build, options = {}) + @build = build + end + + def data + { + 'build' => build_data + } + end + + def build_data + { + 'id' => build.id + } + end + end + end + end + end +end + diff --git a/vendor/travis-core/lib/travis/api/v0/notification/repository.rb b/vendor/travis-core/lib/travis/api/v0/notification/repository.rb new file mode 100644 index 00000000..6b9861b8 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/notification/repository.rb @@ -0,0 +1,28 @@ +module Travis + module Api + module V0 + module Notification + class Repository + attr_reader :repository + + def initialize(repository, options = {}) + @repository = repository + end + + def data + { + 'repository' => repository_data + } + end + + def repository_data + { + 'id' => repository.id, + 'slug' => repository.slug + } + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/notification/user.rb b/vendor/travis-core/lib/travis/api/v0/notification/user.rb new file mode 100644 index 00000000..95ba9192 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/notification/user.rb @@ -0,0 +1,28 @@ +module Travis + module Api + module V0 + module Notification + class User + attr_reader :user + + def initialize(user, options = {}) + @user = user + end + + def data + { + 'user' => user_data + } + end + + def user_data + { + 'id' => user.id, + 'login' => user.login + } + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher.rb b/vendor/travis-core/lib/travis/api/v0/pusher.rb new file mode 100644 index 00000000..852c3045 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher.rb @@ -0,0 +1,11 @@ +module Travis + module Api + module V0 + module Pusher + require 'travis/api/v0/pusher/annotation' + require 'travis/api/v0/pusher/build' + require 'travis/api/v0/pusher/job' + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/annotation.rb b/vendor/travis-core/lib/travis/api/v0/pusher/annotation.rb new file mode 100644 index 00000000..f29f3d42 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/annotation.rb @@ -0,0 +1,33 @@ +module Travis + module Api + module V0 + module Pusher + class Annotation + require 'travis/api/v0/pusher/annotation/created' + require 'travis/api/v0/pusher/annotation/updated' + + include Formats + + attr_reader :annotation + + def initialize(annotation, options = {}) + @annotation = annotation + end + + def data + { + "annotation" => { + "id" => annotation.id, + "job_id" => annotation.job_id, + "description" => annotation.description, + "url" => annotation.url, + "status" => annotation.status, + "provider_name" => annotation.annotation_provider.name, + } + } + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/annotation/created.rb b/vendor/travis-core/lib/travis/api/v0/pusher/annotation/created.rb new file mode 100644 index 00000000..fb476fd1 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/annotation/created.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Annotation + class Created < Annotation + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/annotation/updated.rb b/vendor/travis-core/lib/travis/api/v0/pusher/annotation/updated.rb new file mode 100644 index 00000000..99865c40 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/annotation/updated.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Annotation + class Updated < Annotation + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build.rb new file mode 100644 index 00000000..3762aa38 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build.rb @@ -0,0 +1,111 @@ +module Travis + module Api + module V0 + module Pusher + class Build + require 'travis/api/v0/pusher/build/canceled' + require 'travis/api/v0/pusher/build/created' + require 'travis/api/v0/pusher/build/received' + require 'travis/api/v0/pusher/build/started' + require 'travis/api/v0/pusher/build/finished' + + include Formats + + attr_reader :build, :options + + def initialize(build, options = {}) + @build = build + @options = options + end + + def data + { + 'build' => build_data(build), + 'commit' => commit_data(build.commit), + 'repository' => repository_data(build.repository) + } + end + + private + + def build_data(build) + commit = build.commit + { + 'id' => build.id, + 'repository_id' => build.repository_id, + 'commit_id' => build.commit_id, + 'number' => build.number, + 'pull_request' => build.pull_request?, + 'pull_request_title' => build.pull_request_title, + 'pull_request_number' => build.pull_request_number, + 'state' => build.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, + 'event_type' => build.event_type, + + # this is a legacy thing, we should think about removing it + 'commit' => commit.commit, + 'branch' => commit.branch, + 'message' => commit.message, + 'compare_url' => commit.compare_url, + '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 + } + end + + def commit_data(commit) + { + '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 repository_data(repository) + { + 'id' => repository.id, + 'slug' => repository.slug, + 'description' => repository.description, + 'private' => repository.private, + 'last_build_id' => repository.last_build_id, + 'last_build_number' => repository.last_build_number, + 'last_build_state' => repository.last_build_state.to_s, + 'last_build_duration' => repository.last_build_duration, + 'last_build_language' => nil, + 'last_build_started_at' => format_date(repository.last_build_started_at), + 'last_build_finished_at' => format_date(repository.last_build_finished_at), + 'github_language' => repository.github_language, + 'default_branch' => { + 'name' => repository.default_branch, + 'last_build_id' => last_build_on_default_branch_id(repository) + }, + 'active' => repository.active, + 'current_build_id' => repository.current_build_id + } + end + + def last_build_on_default_branch_id(repository) + default_branch = Branch.where(repository_id: repository.id, name: repository.default_branch).first + + if default_branch + default_branch.last_build_id + end + end + end + end + end + end +end + diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/canceled.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/canceled.rb new file mode 100644 index 00000000..19ae8256 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build/canceled.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Build + class Canceled < Build + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/created.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/created.rb new file mode 100644 index 00000000..2a0d008e --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build/created.rb @@ -0,0 +1,15 @@ +require 'travis/api/v1' + +module Travis + module Api + module V0 + module Pusher + class Build + class Created < Build + end + end + end + end + end +end + diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/finished.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/finished.rb new file mode 100644 index 00000000..299df81d --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build/finished.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module V0 + module Pusher + class Build + class Finished < Build + end + end + end + end + end +end + + diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/received.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/received.rb new file mode 100644 index 00000000..005f2ab2 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build/received.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Build + class Received < Build + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/received/job.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/received/job.rb new file mode 100644 index 00000000..6786f598 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build/received/job.rb @@ -0,0 +1,47 @@ +module Travis + module Api + module V0 + module Pusher + class Build + class Received < Build + class Job + include Formats, V1::Helpers::Legacy + + attr_reader :job, :commit + + def initialize(job) + @job = job + @commit = job.commit + end + + def data + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_private' => repository.private, + 'parent_id' => job.source_id, + 'number' => job.number, + 'state' => job.state.to_s, + 'result' => legacy_job_result(job), + 'config' => job.obfuscated_config, + 'commit' => commit.commit, + 'branch' => commit.branch, + 'message' => commit.message, + 'compare_url' => commit.compare_url, + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + '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, + 'allow_failure' => job.allow_failure + } + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/started.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/started.rb new file mode 100644 index 00000000..1ad598b0 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build/started.rb @@ -0,0 +1,13 @@ +module Travis + module Api + module V0 + module Pusher + class Build + class Started < Build + end + end + end + end + end +end + diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/started/job.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/started/job.rb new file mode 100644 index 00000000..4a94660b --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/build/started/job.rb @@ -0,0 +1,47 @@ +module Travis + module Api + module V0 + module Pusher + class Build + class Started < Build + class Job + include Formats, V1::Helpers::Legacy + + attr_reader :job, :commit + + def initialize(job) + @job = job + @commit = job.commit + end + + def data + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_private' => repository.private, + 'parent_id' => job.source_id, + 'number' => job.number, + 'state' => job.state.to_s, + 'result' => legacy_job_result(job), + 'config' => job.obfuscated_config, + 'commit' => commit.commit, + 'branch' => commit.branch, + 'message' => commit.message, + 'compare_url' => commit.compare_url, + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + '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, + 'allow_failure' => job.allow_failure + } + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job.rb new file mode 100644 index 00000000..efd3cbc8 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/job.rb @@ -0,0 +1,67 @@ +module Travis + module Api + module V0 + module Pusher + class Job + require 'travis/api/v0/pusher/job/canceled' + require 'travis/api/v0/pusher/job/created' + require 'travis/api/v0/pusher/job/log' + require 'travis/api/v0/pusher/job/received' + require 'travis/api/v0/pusher/job/started' + require 'travis/api/v0/pusher/job/finished' + + include Formats + + attr_reader :job, :options + + def initialize(job, options = {}) + @job = job + @options = options + end + + def data + job_data(job).merge( + 'commit' => commit_data(job.commit) + ) + end + + private + + def job_data(job) + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_slug' => job.repository.slug, + 'repository_private' => job.repository.private, + 'build_id' => job.source_id, + 'commit_id' => job.commit_id, + 'log_id' => job.log_id, + 'number' => job.number, + 'state' => job.state.to_s, + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + 'queue' => job.queue, + 'allow_failure' => job.allow_failure, + 'annotation_ids' => job.annotation_ids + } + end + + def commit_data(commit) + { + '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 + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/canceled.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/canceled.rb new file mode 100644 index 00000000..426d03f3 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/job/canceled.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Job + class Canceled < Job + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/created.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/created.rb new file mode 100644 index 00000000..c2af620e --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/job/created.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Job + class Created < Job + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/finished.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/finished.rb new file mode 100644 index 00000000..2214041c --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/job/finished.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Job + class Finished < Job + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/log.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/log.rb new file mode 100644 index 00000000..54115ee6 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/job/log.rb @@ -0,0 +1,31 @@ +module Travis + module Api + module V0 + module Pusher + class Job + class Log + attr_reader :job, :options + + def initialize(job, options = {}) + @job = job + @options = options + end + + def data + { + 'id' => job.id, + 'build_id' => job.source_id, + 'repository_id' => job.repository_id, + 'repository_private' => repository.private, + '_log' => options[:_log], + 'number' => options[:number], + 'final' => options[:final] + } + end + end + end + end + end + end +end + diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/received.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/received.rb new file mode 100644 index 00000000..0921280d --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/job/received.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Job + class Received < Job + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/started.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/started.rb new file mode 100644 index 00000000..90ccc963 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/pusher/job/started.rb @@ -0,0 +1,12 @@ +module Travis + module Api + module V0 + module Pusher + class Job + class Started < Job + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/worker.rb b/vendor/travis-core/lib/travis/api/v0/worker.rb new file mode 100644 index 00000000..4826160e --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/worker.rb @@ -0,0 +1,9 @@ +module Travis + module Api + module V0 + module Worker + require 'travis/api/v0/worker/job' + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/worker/job.rb b/vendor/travis-core/lib/travis/api/v0/worker/job.rb new file mode 100644 index 00000000..796d0620 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/worker/job.rb @@ -0,0 +1,33 @@ +module Travis + module Api + module V0 + module Worker + class Job + require 'travis/api/v0/worker/job/test' + + attr_reader :job + + def initialize(job, options = {}) + @job = job + end + + def commit + job.commit + end + + def repository + job.repository + end + + def request + build.request + end + + def build + job.source + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0/worker/job/test.rb b/vendor/travis-core/lib/travis/api/v0/worker/job/test.rb new file mode 100644 index 00000000..8462a9bc --- /dev/null +++ b/vendor/travis-core/lib/travis/api/v0/worker/job/test.rb @@ -0,0 +1,118 @@ +module Travis + module Api + module V0 + module Worker + class Job + class Test < Job + include Formats + + def data + { + 'type' => 'test', + # TODO legacy. remove this once workers respond to a 'job' key + 'build' => job_data, + 'job' => job_data, + 'source' => build_data, + 'repository' => repository_data, + 'pull_request' => commit.pull_request? ? pull_request_data : false, + 'config' => job.decrypted_config, + 'queue' => job.queue, + 'uuid' => Travis.uuid, + 'ssh_key' => ssh_key, + 'env_vars' => env_vars, + 'timeouts' => timeouts + } + end + + def build_data + { + 'id' => build.id, + 'number' => build.number + } + end + + def job_data + data = { + 'id' => job.id, + 'number' => job.number, + 'commit' => commit.commit, + 'commit_range' => commit.range, + 'commit_message' => commit.message, + 'branch' => commit.branch, + 'ref' => commit.pull_request? ? commit.ref : nil, + 'state' => job.state.to_s, + 'secure_env_enabled' => job.secure_env_enabled? + } + data['tag'] = request.tag_name if include_tag_name? + data['pull_request'] = commit.pull_request? ? commit.pull_request_number : false + data + end + + def repository_data + { + 'id' => repository.id, + 'slug' => repository.slug, + 'github_id' => repository.github_id, + 'source_url' => repository.source_url, + 'api_url' => repository.api_url, + 'last_build_id' => repository.last_build_id, + 'last_build_number' => repository.last_build_number, + 'last_build_started_at' => format_date(repository.last_build_started_at), + 'last_build_finished_at' => format_date(repository.last_build_finished_at), + 'last_build_duration' => repository.last_build_duration, + 'last_build_state' => repository.last_build_state.to_s, + 'description' => repository.description, + 'default_branch' => repository.default_branch + } + end + + def pull_request_data + { + 'number' => commit.pull_request_number, + 'head_repo' => request.head_repo, + 'base_repo' => request.base_repo, + 'head_branch' => request.head_branch, + 'base_branch' => request.base_branch + } + end + + def ssh_key + nil + end + + def env_vars + vars = settings.env_vars + vars = vars.public unless job.secure_env_enabled? + + vars.map do |var| + { + 'name' => var.name, + 'value' => var.value.decrypt, + 'public' => var.public + } + end + end + + def timeouts + { 'hard_limit' => timeout(:hard_limit), 'log_silence' => timeout(:log_silence) } + end + + def timeout(type) + timeout = settings.send(:"timeout_#{type}") + timeout = timeout * 60 if timeout # worker handles timeouts in seconds + timeout + end + + def include_tag_name? + Travis.config.include_tag_name_in_worker_payload && request.tag_name.present? + end + + def settings + repository.settings + end + end + end + end + end + end +end