
- Re-factor - Remove code for notifications - Remove addons - Remove travis-core gem. - Ignore logs directory only - Move core tests to spec/lib
94 lines
1.8 KiB
Ruby
94 lines
1.8 KiB
Ruby
require 'faraday'
|
|
require 'core_ext/hash/compact'
|
|
require 'core_ext/hash/deep_symbolize_keys'
|
|
require 'active_support/core_ext/string'
|
|
require 'active_support/core_ext/class/attribute'
|
|
|
|
module Travis
|
|
class Task
|
|
include Logging
|
|
extend Instrumentation
|
|
|
|
class_attribute :run_local
|
|
|
|
class << self
|
|
extend Exceptions::Handling
|
|
|
|
def run(queue, *args)
|
|
Travis::Async.run(self, :perform, async_options(queue), *args)
|
|
end
|
|
|
|
def run_local?
|
|
!!run_local || Travis::Features.feature_deactivated?(:travis_tasks)
|
|
end
|
|
|
|
def inline_or_sidekiq
|
|
run_local? ? :inline : :sidekiq
|
|
end
|
|
|
|
def async_options(queue)
|
|
{ queue: queue, use: inline_or_sidekiq, retries: 8, backtrace: true }
|
|
end
|
|
|
|
def perform(*args)
|
|
new(*args).run
|
|
end
|
|
end
|
|
|
|
attr_reader :payload, :params
|
|
|
|
def initialize(payload, params = {})
|
|
@payload = payload.deep_symbolize_keys
|
|
@params = params.deep_symbolize_keys
|
|
end
|
|
|
|
def run
|
|
timeout after: params[:timeout] || 60 do
|
|
process
|
|
end
|
|
end
|
|
instrument :run
|
|
|
|
private
|
|
|
|
def repository
|
|
@repository ||= payload[:repository]
|
|
end
|
|
|
|
def job
|
|
@job ||= payload[:job]
|
|
end
|
|
|
|
def build
|
|
@build ||= payload[:build]
|
|
end
|
|
|
|
def request
|
|
@request ||= payload[:request]
|
|
end
|
|
|
|
def commit
|
|
@commit ||= payload[:commit]
|
|
end
|
|
|
|
def pull_request?
|
|
build[:pull_request]
|
|
end
|
|
|
|
def http
|
|
@http ||= Faraday.new(http_options) do |f|
|
|
f.request :url_encoded
|
|
f.adapter :net_http
|
|
end
|
|
end
|
|
|
|
def http_options
|
|
{ ssl: Travis.config.ssl.compact }
|
|
end
|
|
|
|
def timeout(options = { after: 60 }, &block)
|
|
Timeout::timeout(options[:after], &block)
|
|
end
|
|
end
|
|
end
|