94 lines
3.0 KiB
Ruby
94 lines
3.0 KiB
Ruby
require 'pusher'
|
|
require 'travis/support'
|
|
require 'travis/support/database'
|
|
require 'travis_core/version'
|
|
require 'travis/redis_pool'
|
|
require 'travis/errors'
|
|
require 'travis/commit_command'
|
|
|
|
# travis-core holds the central parts of the model layer used in both travis-ci
|
|
# (i.e. the web application) as well as travis-hub (a non-rails ui-less JRuby
|
|
# application that receives, processes and distributes messages from/to the
|
|
# workers and issues various events like email, pusher, irc notifications and
|
|
# so on).
|
|
#
|
|
# travis/model - contains ActiveRecord models that and model the main
|
|
# parts of the domain logic (e.g. repository, build, job
|
|
# etc.) and issue events on state changes (e.g.
|
|
# build:created, job:test:finished etc.)
|
|
# travis/event - contains event handlers that register for certain
|
|
# events and send out such things as email, pusher, irc
|
|
# notifications, archive builds or queue jobs for the
|
|
# workers.
|
|
# travis/mailer - contains ActionMailers for sending out email
|
|
# notifications
|
|
#
|
|
# travis-core also contains some helper classes and modules like Travis::Database
|
|
# (needed in travis-hub in order to connect to the database) and Travis::Renderer
|
|
# (our inferior layer on top of Rabl).
|
|
module Travis
|
|
class << self
|
|
def services=(services)
|
|
# Travis.logger.info("Using services: #{services}")
|
|
@services = services
|
|
end
|
|
|
|
def services
|
|
@services ||= Travis::Services
|
|
end
|
|
end
|
|
|
|
require 'travis/model'
|
|
require 'travis/task'
|
|
require 'travis/event'
|
|
require 'travis/addons'
|
|
require 'travis/api'
|
|
require 'travis/config/defaults'
|
|
require 'travis/features'
|
|
require 'travis/github'
|
|
require 'travis/mailer'
|
|
require 'travis/notification'
|
|
require 'travis/services'
|
|
|
|
class UnknownRepository < StandardError; end
|
|
class GithubApiError < StandardError; end
|
|
class AdminMissing < StandardError; end
|
|
class RepositoryMissing < StandardError; end
|
|
class LogAlreadyRemoved < StandardError; end
|
|
class AuthorizationDenied < StandardError; end
|
|
class JobUnfinished < StandardError; end
|
|
|
|
class << self
|
|
def setup(options = {})
|
|
@config = Config.load(*options[:configs])
|
|
@redis = Travis::RedisPool.new(config.redis.to_h)
|
|
|
|
Travis.logger.info('Setting up Travis::Core')
|
|
|
|
Github.setup
|
|
Addons.register
|
|
Services.register
|
|
Github::Services.register
|
|
end
|
|
|
|
attr_accessor :redis, :config
|
|
|
|
def pusher
|
|
@pusher ||= ::Pusher.tap do |pusher|
|
|
pusher.app_id = config.pusher.app_id
|
|
pusher.key = config.pusher.key
|
|
pusher.secret = config.pusher.secret
|
|
pusher.scheme = config.pusher.scheme if config.pusher.scheme
|
|
pusher.host = config.pusher.host if config.pusher.host
|
|
pusher.port = config.pusher.port if config.pusher.port
|
|
end
|
|
end
|
|
|
|
def states_cache
|
|
@states_cache ||= Travis::StatesCache.new
|
|
end
|
|
end
|
|
|
|
setup
|
|
end
|