Auto-merged master into cd-v3 on deployment.

This commit is contained in:
carlad 2016-04-14 10:43:36 +02:00
commit 866fd2a617
16 changed files with 275 additions and 135 deletions

3
.rspec Normal file
View File

@ -0,0 +1,3 @@
--colour
--tty
--format documentation

View File

@ -7,6 +7,7 @@ gem 's3', github: 'travis-ci/s3'
gem 'travis-core', github: 'travis-ci/travis-core' gem 'travis-core', github: 'travis-ci/travis-core'
gem 'travis-support', github: 'travis-ci/travis-support' gem 'travis-support', github: 'travis-ci/travis-support'
gem 'travis-amqp', github: 'travis-ci/travis-amqp'
gem 'travis-config', '~> 0.1.0' gem 'travis-config', '~> 0.1.0'
gem 'travis-sidekiqs', github: 'travis-ci/travis-sidekiqs', require: nil gem 'travis-sidekiqs', github: 'travis-ci/travis-sidekiqs', require: nil
gem 'travis-yaml', github: 'travis-ci/travis-yaml' gem 'travis-yaml', github: 'travis-ci/travis-yaml'
@ -16,7 +17,7 @@ gem 'sinatra-contrib', require: nil #github: 'sinatra/sinatra-contrib', require:
gem 'active_model_serializers' gem 'active_model_serializers'
gem 'unicorn' gem 'unicorn'
gem 'sentry-raven', github: 'getsentry/raven-ruby' gem 'sentry-raven'
gem 'yard-sinatra', github: 'rkh/yard-sinatra' gem 'yard-sinatra', github: 'rkh/yard-sinatra'
gem 'rack-contrib', github: 'rack/rack-contrib' gem 'rack-contrib', github: 'rack/rack-contrib'
gem 'rack-cache', github: 'rtomayko/rack-cache' gem 'rack-cache', github: 'rtomayko/rack-cache'
@ -35,13 +36,16 @@ gem 'stackprof'
gem 'jemalloc' gem 'jemalloc'
gem 'customerio' gem 'customerio'
group :development, :test do
gem 'travis-migrations', github: 'travis-ci/travis-migrations'
end
group :test do group :test do
gem 'rspec', '~> 2.13' gem 'rspec', '~> 2.13'
gem 'rspec-its' gem 'rspec-its'
gem 'factory_girl', '~> 2.4.0' gem 'factory_girl', '~> 2.4.0'
gem 'mocha', '~> 0.12' gem 'mocha', '~> 0.12'
gem 'database_cleaner', '~> 0.8.0' gem 'database_cleaner', '~> 0.8.0'
gem 'travis-migrations', github: 'travis-ci/travis-migrations'
end end
group :development do group :development do

View File

@ -5,14 +5,6 @@ GIT
metriks-librato_metrics (1.0.2) metriks-librato_metrics (1.0.2)
metriks (>= 0.9.9.6) metriks (>= 0.9.9.6)
GIT
remote: git://github.com/getsentry/raven-ruby.git
revision: 84392e5db701f0b5c66802aab9cc82ef9a5ad830
specs:
sentry-raven (0.10.1)
faraday (>= 0.7.6)
uuidtools
GIT GIT
remote: git://github.com/rack/rack-contrib.git remote: git://github.com/rack/rack-contrib.git
revision: 1b11346d729efd88b274cd7f704e0bca9eb3de7a revision: 1b11346d729efd88b274cd7f704e0bca9eb3de7a
@ -48,9 +40,15 @@ GIT
s3 (0.3.21) s3 (0.3.21)
proxies (~> 0.2.0) proxies (~> 0.2.0)
GIT
remote: git://github.com/travis-ci/travis-amqp.git
revision: c388299757b7eda2cc0e33cdc7d90113cf283e6a
specs:
travis-amqp (0.0.1)
GIT GIT
remote: git://github.com/travis-ci/travis-core.git remote: git://github.com/travis-ci/travis-core.git
revision: f7b3a76b3f39c28bb5cf7b9dc24acec13908a11a revision: a66c345d44fd9c28884d694acfff3b1a0fbc5232
specs: specs:
travis-core (0.0.1) travis-core (0.0.1)
actionmailer (~> 3.2.19) actionmailer (~> 3.2.19)
@ -58,7 +56,7 @@ GIT
coder (~> 0.4.0) coder (~> 0.4.0)
data_migrations (~> 0.0.1) data_migrations (~> 0.0.1)
gh gh
hashr (~> 0.0.19) hashr
metriks (~> 0.9.7) metriks (~> 0.9.7)
multi_json multi_json
pusher (~> 0.14.0) pusher (~> 0.14.0)
@ -286,6 +284,8 @@ GEM
rspec-core (>= 2.99.0.beta1) rspec-core (>= 2.99.0.beta1)
rspec-expectations (>= 2.99.0.beta1) rspec-expectations (>= 2.99.0.beta1)
rspec-mocks (2.99.2) rspec-mocks (2.99.2)
sentry-raven (0.15.3)
faraday (>= 0.7.6)
sidekiq (3.3.0) sidekiq (3.3.0)
celluloid (>= 0.16.0) celluloid (>= 0.16.0)
connection_pool (>= 2.0.0) connection_pool (>= 2.0.0)
@ -331,13 +331,12 @@ GEM
treetop (1.4.15) treetop (1.4.15)
polyglot polyglot
polyglot (>= 0.3.1) polyglot (>= 0.3.1)
tzinfo (0.3.47) tzinfo (0.3.48)
unicorn (4.8.3) unicorn (4.8.3)
kgio (~> 2.6) kgio (~> 2.6)
rack rack
raindrops (~> 0.7) raindrops (~> 0.7)
useragent (0.13.3) useragent (0.13.3)
uuidtools (2.1.5)
virtus (1.0.5) virtus (1.0.5)
axiom-types (~> 0.1) axiom-types (~> 0.1)
coercible (~> 1.0) coercible (~> 1.0)
@ -373,12 +372,13 @@ DEPENDENCIES
rspec (~> 2.13) rspec (~> 2.13)
rspec-its rspec-its
s3! s3!
sentry-raven! sentry-raven
simplecov simplecov
sinatra sinatra
sinatra-contrib sinatra-contrib
skylight (~> 0.6.0.beta.1) skylight (~> 0.6.0.beta.1)
stackprof stackprof
travis-amqp!
travis-api! travis-api!
travis-config (~> 0.1.0) travis-config (~> 0.1.0)
travis-core! travis-core!

View File

@ -4,51 +4,68 @@ This is the app running on https://api.travis-ci.org/
## Requirements ## Requirements
You will need the following packages to get travis-api to work:
1. PostgreSQL 9.3 or higher 1. PostgreSQL 9.3 or higher
1. Redis 2. Bundler
1. RabbitMQ 3. Redis Server
1. Nginx *NB: If working on Ubuntu please install Nginx manually from source. [This guide](http://www.rackspace.com/knowledge_center/article/ubuntu-and-debian-installing-nginx-from-source) is helpful but make sure you install the [latest stable version](https://www.nginx.com/resources/wiki/start/topics/tutorials/install/#stable), include the user name on your ubuntu machine when compiling (add `--user=[yourusername]` as an option when running `./configure`), and don't follow any subsequent server configuration steps. Travis-api will start and configure its own nginx server when run locally. 4. *Optional:* RabbitMQ Server
5. Nginx -
*If working in Ubuntu please install nginx manually from source: Download and extract latest nginx version, open a terminal in extracted folder and then run the following:*
```sh-session
$ sudo apt-get install libpcre3 libpcre3-dev
$ auto/configure --user=$USER
$ make
$ sudo make install
$ sudo ln -s /usr/local/nginx/sbin/nginx /bin/nginx
```
## Installation ## Installation
### Setup ### Setup
```sh-session
$ bundle install $ bundle install
```
### Database setup ### Database setup
NB detail for how `rake` sets up the database can be found in the `Rakefile`. In the `namespace :db` block you will see the database name for development is hardcoded to `travis-development`. If you are using a different configuration you will have to make your own adjustments. *You might need to create a role first. For this you should run the following:*
1. `bundle exec rake db:create`
2. for testing 'RAILS_ENV=test bundle exec rake db:create --trace'
1. Clone `travis-logs` and copy the `logs` database (assume the PostgreSQL user is `postgres`):
```sh-session ```sh-session
cd .. $ sudo -u postgres psql -c "CREATE USER yourusername WITH SUPERUSER PASSWORD 'yourpassword'"
git clone https://github.com/travis-ci/travis-logs.git
cd travis-logs
rvm jruby do bundle exec rake db:migrate # `travis-logs` requires JRuby
psql -c "DROP TABLE IF EXISTS logs CASCADE" -U postgres travis_development
pg_dump -t logs travis_logs_development | psql -U postgres travis_development
``` ```
Repeat the database steps for `RAILS_ENV=test`. NB detail for how `rake` sets up the database can be found in the `Rakefile`. In the `namespace :db` block you will see the database name is configured using the environment variable RAILS_ENV. If you are using a different configuration you will have to make your own adjustments.
```sh-session ```sh-session
RAILS_ENV=test bundle exec rake db:create $ RAILS_ENV=development bundle exec rake db:create
pushd ../travis-logs $ RAILS_ENV=test bundle exec rake db:create
RAILS_ENV=test rvm jruby do bundle exec rake db:migrate ```
psql -c "DROP TABLE IF EXISTS logs CASCADE" -U postgres travis_test #### Optional
pg_dump -t logs travis_logs_test | psql -U postgres travis_test Clone `travis-logs` and copy the `logs` database (assume the PostgreSQL user is `postgres`):
popd ```sh-session
$ cd ..
$ git clone https://github.com/travis-ci/travis-logs.git
$ cd travis-logs
$ rvm jruby do bundle exec rake db:migrate # `travis-logs` requires JRuby
$ psql -c "DROP TABLE IF EXISTS logs CASCADE" -U postgres travis_development
$ pg_dump -t logs travis_logs_development | psql -U postgres travis_development
$ RAILS_ENV=test bundle exec rake db:create
$ pushd ../travis-logs
$ RAILS_ENV=test rvm jruby do bundle exec rake db:migrate
$ psql -c "DROP TABLE IF EXISTS logs CASCADE" -U postgres travis_test
$ pg_dump -t logs travis_logs_test | psql -U postgres travis_test
$ popd
``` ```
### Run tests ### Run tests
```sh-session
$ rake spec $ bundle exec rspec
```
### Run the server ### Run the server
```sh-session
$ bundle exec script/server $ bundle exec script/server
```
If you have problems with Nginx because the websocket is already in use, try restarting your computer.
## Contributing ## Contributing

View File

@ -1,20 +1,10 @@
require 'rake'
require 'travis/migrations'
task default: :spec
namespace :db do namespace :db do
if ENV["RAILS_ENV"] == 'test' env = ENV["RAILS_ENV"]
desc 'Create and migrate the test database' if env != 'production'
desc "Create and migrate the #{env} database"
task :create do task :create do
sh 'createdb travis_test' rescue nil sh "createdb travis_#{env}" rescue nil
sh "psql -q travis_test < #{Gem.loaded_specs['travis-migrations'].full_gem_path}/db/structure.sql" sh "psql -q travis_#{env} < #{Gem.loaded_specs['travis-migrations'].full_gem_path}/db/structure.sql"
end
else
desc 'Create and migrate the development database'
task :create do
sh 'createdb travis_development' rescue nil
sh "psql -q travis_development < #{Gem.loaded_specs['travis-migrations'].full_gem_path}/db/structure.sql"
end end
end end
end end
@ -37,9 +27,9 @@ task 'travis-api.gemspec' do
end end
File.open('travis-api.gemspec', 'w') { |f| f << content } File.open('travis-api.gemspec', 'w') { |f| f << content }
end end
task default: 'travis-api.gemspec'
task default: 'travis-api.gemspec' ## can this be removed? what other rakefiles need to be included?
# tasks_path = File.expand_path('../lib/tasks/*.rake', __FILE__)
tasks_path = File.expand_path('../lib/tasks/*.rake', __FILE__) # Dir.glob(tasks_path).each { |r| import r }
Dir.glob(tasks_path).each { |r| import r }

View File

@ -4,12 +4,14 @@ require 'active_record_postgres_variables'
# now actually load travis # now actually load travis
require 'travis' require 'travis'
require 'travis/amqp'
require 'travis/model' require 'travis/model'
require 'travis/support/amqp'
require 'travis/states_cache' require 'travis/states_cache'
require 'rack' require 'rack'
require 'rack/protection' require 'rack/protection'
require 'rack/contrib' require 'rack/contrib/config'
require 'rack/contrib/jsonp'
require 'rack/contrib/post_body_content_type_parser'
require 'dalli' require 'dalli'
require 'memcachier' require 'memcachier'
require 'rack/cache' require 'rack/cache'
@ -18,11 +20,14 @@ require 'active_record'
require 'redis' require 'redis'
require 'gh' require 'gh'
require 'raven' require 'raven'
require 'raven/integrations/rack'
require 'sidekiq' require 'sidekiq'
require 'metriks/reporter/logger' require 'metriks/reporter/logger'
require 'metriks/librato_metrics_reporter' require 'metriks/librato_metrics_reporter'
require 'travis/support/log_subscriber/active_record_metrics' require 'travis/support/log_subscriber/active_record_metrics'
require 'fileutils' require 'fileutils'
require 'travis/api/app/endpoint'
require 'travis/api/app/middleware'
require 'travis/api/instruments' require 'travis/api/instruments'
require 'travis/api/v2/http' require 'travis/api/v2/http'
require 'travis/api/v3' require 'travis/api/v3'
@ -171,14 +176,13 @@ module Travis::Api
def self.setup! def self.setup!
setup_travis setup_travis
load_endpoints
setup_endpoints setup_endpoints
@setup = true @setup = true
end end
def self.setup_travis def self.setup_travis
Travis::Async.enabled = true Travis::Async.enabled = true
Travis::Amqp.config = Travis.config.amqp Travis::Amqp.setup(Travis.config.amqp)
setup_database_connections setup_database_connections
@ -214,11 +218,6 @@ module Travis::Api
Travis::Metrics.setup Travis::Metrics.setup
end end
def self.load_endpoints
Dir.glob("#{__dir__}/app/middleware/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }
Dir.glob("#{__dir__}/app/endpoint/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }
end
def self.setup_endpoints def self.setup_endpoints
Base.subclasses.each(&:setup) Base.subclasses.each(&:setup)
end end

View File

@ -1,6 +1,8 @@
require 'travis/api/app'
require 'sinatra/base' require 'sinatra/base'
require 'mustermann' require 'mustermann'
require 'travis/api/app'
require 'travis/api/app/extensions'
require 'travis/api/app/helpers'
class Travis::Api::App class Travis::Api::App
# Superclass for any endpoint and middleware. # Superclass for any endpoint and middleware.

View File

@ -1,6 +1,7 @@
require 'travis/api/app'
require 'addressable/uri' require 'addressable/uri'
require 'active_record/base' require 'active_record/base'
require 'travis/api/app'
require 'travis/api/app/base'
class Travis::Api::App class Travis::Api::App
# Superclass for HTTP endpoints. Takes care of prefixing. # Superclass for HTTP endpoints. Takes care of prefixing.
@ -48,3 +49,23 @@ class Travis::Api::App
end end
end end
end end
require 'travis/api/app/endpoint/accounts'
require 'travis/api/app/endpoint/authorization'
require 'travis/api/app/endpoint/branches'
require 'travis/api/app/endpoint/broadcasts'
require 'travis/api/app/endpoint/builds'
require 'travis/api/app/endpoint/documentation'
require 'travis/api/app/endpoint/endpoints'
require 'travis/api/app/endpoint/env_vars'
require 'travis/api/app/endpoint/home'
require 'travis/api/app/endpoint/hooks'
require 'travis/api/app/endpoint/jobs'
require 'travis/api/app/endpoint/lint'
require 'travis/api/app/endpoint/logs'
require 'travis/api/app/endpoint/repos'
require 'travis/api/app/endpoint/requests'
require 'travis/api/app/endpoint/setting_endpoint'
require 'travis/api/app/endpoint/singleton_settings_endpoint'
require 'travis/api/app/endpoint/uptime'
require 'travis/api/app/endpoint/users'

View File

@ -1,8 +1,4 @@
require 'travis/api/app' require 'travis/api/app/extensions/expose_pattern'
require 'travis/api/app/extensions/scoping'
class Travis::Api::App require 'travis/api/app/extensions/smart_constants'
# Namespace for Sinatra extensions. require 'travis/api/app/extensions/subclass_tracker'
module Extensions
Dir.glob("#{__dir__}/extensions/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] }
end
end

View File

@ -1,8 +1,7 @@
require 'travis/api/app' require 'travis/api/app'
require 'travis/api/app/helpers/accept'
class Travis::Api::App require 'travis/api/app/helpers/current_user'
# Namespace for helpers. require 'travis/api/app/helpers/db_follower'
module Helpers require 'travis/api/app/helpers/flash'
Dir.glob("#{__dir__}/helpers/*.rb").each { |f| require f[%r[(?<=lib/).+(?=\.rb$)]] } require 'travis/api/app/helpers/mime_types'
end require 'travis/api/app/helpers/respond_with'
end

View File

@ -3,5 +3,11 @@ require 'travis/api/app'
class Travis::Api::App class Travis::Api::App
# Superclass for all middleware. # Superclass for all middleware.
class Middleware < Base class Middleware < Base
require 'travis/api/app/middleware/logging'
require 'travis/api/app/middleware/metriks'
require 'travis/api/app/middleware/rewrite'
require 'travis/api/app/middleware/scope_check'
require 'travis/api/app/middleware/skylight'
require 'travis/api/app/middleware/user_agent_tracker'
end end
end end

View File

@ -62,5 +62,9 @@ module Travis::API::V3
__send__(name, *args, &block) __send__(name, *args, &block)
end end
def settings
@settings ||= JSON.load(super)
end
end end
end end

View File

@ -22,14 +22,19 @@ module Travis::API::V3
accepted(remaining_requests: remaining, repository: repository, request: payload) accepted(remaining_requests: remaining, repository: repository, request: payload)
end end
def limit def limit(repository)
if repository.settings.nil?
Travis.config.requests_create_api_limit || LIMIT Travis.config.requests_create_api_limit || LIMIT
else
repository.settings["api_builds_rate_limit"] || Travis.config.requests_create_api_limit || LIMIT
end
end end
def remaining_requests(repository) def remaining_requests(repository)
return limit if access_control.full_access? api_builds_rate_limit = limit(repository)
return api_builds_rate_limit if access_control.full_access?
count = query(:requests).count(repository, TIME_FRAME) count = query(:requests).count(repository, TIME_FRAME)
count > limit ? 0 : limit - count count > api_builds_rate_limit ? 0 : api_builds_rate_limit - count
end end
end end
end end

View File

@ -239,6 +239,26 @@ describe Travis::API::V3::Services::Requests::Create do
} }
end end
describe "overrides default request limit if included in repository.settings" do
before { repo.update_attribute(:settings, { api_builds_rate_limit: 12 }.to_json) }
before { 10.times { repo.requests.create(event_type: 'api', result: 'accepted') } }
before { post("/v3/repo/#{repo.id}/requests", {}, headers) }
example { expect(last_response.status).to be == 202 }
example { expect(JSON.load(body).to_s).to include(
"@type",
"repository",
"remaining_requests",
"2",
"request",
"representation",
"minimal",
"slug",
"svenfuchs/minimal")
}
end
describe "passing the token in params" do describe "passing the token in params" do
let(:params) {{ request: { token: 'foo-bar' }}} let(:params) {{ request: { token: 'foo-bar' }}}
example { expect(sidekiq_params[:credentials]).to be == { example { expect(sidekiq_params[:credentials]).to be == {

View File

@ -11,75 +11,85 @@ Gem::Specification.new do |s|
s.authors = [ s.authors = [
"Konstantin Haase", "Konstantin Haase",
"Piotr Sarnacki", "Piotr Sarnacki",
"carlad",
"Sven Fuchs", "Sven Fuchs",
"Hiro Asari", "Hiro Asari",
"Mathias Meyer", "Mathias Meyer",
"Josh Kalderimis", "Josh Kalderimis",
"Henrik Hodne", "Henrik Hodne",
"carlad",
"Tyranja", "Tyranja",
"Andre Arko",
"Dan Buch", "Dan Buch",
"Andre Arko",
"C. Scott Ananian", "C. Scott Ananian",
"Erik Michaels-Ober", "Erik Michaels-Ober",
"Brian Ford", "Brian Ford",
"Lisa P",
"Steve Richert", "Steve Richert",
"Bryan Goldstein",
"Dan Rice",
"James Dennes",
"María de Antón",
"Nick Schonning",
"Patrick Williams",
"Puneeth Chaganti", "Puneeth Chaganti",
"Thais Camilo and Konstantin Haase", "Thais Camilo and Konstantin Haase",
"Tim Carey-Smith", "Tim Carey-Smith",
"Bryan Goldstein",
"Zachary Scott", "Zachary Scott",
"James Dennes", "rainsun"
"rainsun",
"Nick Schonning",
"Patrick Williams",
"Dan Rice"
] ]
s.email = [ s.email = [
"konstantin.mailinglists@googlemail.com", "konstantin.mailinglists@googlemail.com",
"drogus@gmail.com", "drogus@gmail.com",
"me@svenfuchs.com", "me@svenfuchs.com",
"carla@travis-ci.com",
"asari.ruby@gmail.com", "asari.ruby@gmail.com",
"meyer@paperplanes.de", "meyer@paperplanes.de",
"josh.kalderimis@gmail.com", "josh.kalderimis@gmail.com",
"me@henrikhodne.com", "me@henrikhodne.com",
"carlad@users.noreply.github.com",
"henrik@hodne.io", "henrik@hodne.io",
"konstantin.haase@gmail.com",
"carla@travis-ci.org", "carla@travis-ci.org",
"konstantin.haase@gmail.com",
"tyranja@cassiopeia.uberspace.de", "tyranja@cassiopeia.uberspace.de",
"andre@arko.net", "andre@arko.net",
"svenfuchs@artweb-design.de",
"dan@travis-ci.org", "dan@travis-ci.org",
"sferik@gmail.com", "svenfuchs@artweb-design.de",
"cscott@cscott.net", "cscott@cscott.net",
"henrik@travis-ci.com", "sferik@gmail.com",
"steve.richert@gmail.com",
"bford@engineyard.com", "bford@engineyard.com",
"henrik@travis-ci.com",
"mail@lislis.de",
"steve.richert@gmail.com",
"brysgo@gmail.com",
"dan@meatballhat.com",
"dan@zoombody.com",
"jdennes@gmail.com",
"MariadeAnton@users.noreply.github.com",
"nschonni@gmail.com",
"patrick@bittorrent.com", "patrick@bittorrent.com",
"punchagan@muse-amuse.in", "punchagan@muse-amuse.in",
"carlad@users.noreply.github.com",
"dan@zoombody.com",
"rainsuner@gmail.com",
"dev+narwen+rkh@rkh.im", "dev+narwen+rkh@rkh.im",
"tim@spork.in", "tim@spork.in",
"brysgo@gmail.com",
"e@zzak.io", "e@zzak.io",
"jdennes@gmail.com", "rainsuner@gmail.com"
"nschonni@gmail.com",
"dan@meatballhat.com"
] ]
s.files = [ s.files = [
"CONTRIBUTING.md", "CONTRIBUTING.md",
"LICENSE",
"Procfile", "Procfile",
"README.md", "README.md",
"Rakefile", "Rakefile",
"bin/start-nginx", "bin/start-nginx",
"config.ru", "config.ru",
"config/database.yml", "config/database.yml",
"config/mime.types",
"config/nginx.conf.erb",
"config/puma-config.rb", "config/puma-config.rb",
"config/ruby_config.sh",
"config/unicorn.rb", "config/unicorn.rb",
"lib/active_record_postgres_variables.rb",
"lib/conditional_skylight.rb", "lib/conditional_skylight.rb",
"lib/tasks/build_update_branch.rake", "lib/tasks/build_update_branch.rake",
"lib/tasks/build_update_pull_request_data.rake", "lib/tasks/build_update_pull_request_data.rake",
@ -141,6 +151,7 @@ Gem::Specification.new do |s|
"lib/travis/api/app/responders/xml.rb", "lib/travis/api/app/responders/xml.rb",
"lib/travis/api/app/services/schedule_request.rb", "lib/travis/api/app/services/schedule_request.rb",
"lib/travis/api/app/stack_instrumentation.rb", "lib/travis/api/app/stack_instrumentation.rb",
"lib/travis/api/attack.rb",
"lib/travis/api/instruments.rb", "lib/travis/api/instruments.rb",
"lib/travis/api/serializer.rb", "lib/travis/api/serializer.rb",
"lib/travis/api/v2.rb", "lib/travis/api/v2.rb",
@ -184,6 +195,7 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/extensions/encrypted_column.rb", "lib/travis/api/v3/extensions/encrypted_column.rb",
"lib/travis/api/v3/features.rb", "lib/travis/api/v3/features.rb",
"lib/travis/api/v3/github.rb", "lib/travis/api/v3/github.rb",
"lib/travis/api/v3/metrics.rb",
"lib/travis/api/v3/model.rb", "lib/travis/api/v3/model.rb",
"lib/travis/api/v3/models.rb", "lib/travis/api/v3/models.rb",
"lib/travis/api/v3/models/account.rb", "lib/travis/api/v3/models/account.rb",
@ -201,14 +213,30 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/models/repository.rb", "lib/travis/api/v3/models/repository.rb",
"lib/travis/api/v3/models/request.rb", "lib/travis/api/v3/models/request.rb",
"lib/travis/api/v3/models/ssl_key.rb", "lib/travis/api/v3/models/ssl_key.rb",
"lib/travis/api/v3/models/star.rb",
"lib/travis/api/v3/models/subscription.rb", "lib/travis/api/v3/models/subscription.rb",
"lib/travis/api/v3/models/token.rb", "lib/travis/api/v3/models/token.rb",
"lib/travis/api/v3/models/user.rb", "lib/travis/api/v3/models/user.rb",
"lib/travis/api/v3/opt_in.rb", "lib/travis/api/v3/opt_in.rb",
"lib/travis/api/v3/paginator.rb",
"lib/travis/api/v3/paginator/url_generator.rb",
"lib/travis/api/v3/permissions.rb",
"lib/travis/api/v3/permissions/account.rb",
"lib/travis/api/v3/permissions/build.rb",
"lib/travis/api/v3/permissions/generic.rb",
"lib/travis/api/v3/permissions/job.rb",
"lib/travis/api/v3/permissions/organization.rb",
"lib/travis/api/v3/permissions/repository.rb",
"lib/travis/api/v3/permissions/user.rb",
"lib/travis/api/v3/queries.rb", "lib/travis/api/v3/queries.rb",
"lib/travis/api/v3/queries/accounts.rb", "lib/travis/api/v3/queries/accounts.rb",
"lib/travis/api/v3/queries/branch.rb", "lib/travis/api/v3/queries/branch.rb",
"lib/travis/api/v3/queries/branches.rb",
"lib/travis/api/v3/queries/broadcasts.rb",
"lib/travis/api/v3/queries/build.rb", "lib/travis/api/v3/queries/build.rb",
"lib/travis/api/v3/queries/builds.rb",
"lib/travis/api/v3/queries/job.rb",
"lib/travis/api/v3/queries/jobs.rb",
"lib/travis/api/v3/queries/organization.rb", "lib/travis/api/v3/queries/organization.rb",
"lib/travis/api/v3/queries/organizations.rb", "lib/travis/api/v3/queries/organizations.rb",
"lib/travis/api/v3/queries/owner.rb", "lib/travis/api/v3/queries/owner.rb",
@ -224,15 +252,24 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/renderer/accounts.rb", "lib/travis/api/v3/renderer/accounts.rb",
"lib/travis/api/v3/renderer/avatar_url.rb", "lib/travis/api/v3/renderer/avatar_url.rb",
"lib/travis/api/v3/renderer/branch.rb", "lib/travis/api/v3/renderer/branch.rb",
"lib/travis/api/v3/renderer/branches.rb",
"lib/travis/api/v3/renderer/broadcast.rb",
"lib/travis/api/v3/renderer/broadcasts.rb",
"lib/travis/api/v3/renderer/build.rb", "lib/travis/api/v3/renderer/build.rb",
"lib/travis/api/v3/renderer/builds.rb",
"lib/travis/api/v3/renderer/collection_renderer.rb", "lib/travis/api/v3/renderer/collection_renderer.rb",
"lib/travis/api/v3/renderer/commit.rb",
"lib/travis/api/v3/renderer/error.rb", "lib/travis/api/v3/renderer/error.rb",
"lib/travis/api/v3/renderer/job.rb",
"lib/travis/api/v3/renderer/jobs.rb",
"lib/travis/api/v3/renderer/lint.rb",
"lib/travis/api/v3/renderer/model_renderer.rb", "lib/travis/api/v3/renderer/model_renderer.rb",
"lib/travis/api/v3/renderer/organization.rb", "lib/travis/api/v3/renderer/organization.rb",
"lib/travis/api/v3/renderer/organizations.rb", "lib/travis/api/v3/renderer/organizations.rb",
"lib/travis/api/v3/renderer/owner.rb", "lib/travis/api/v3/renderer/owner.rb",
"lib/travis/api/v3/renderer/repositories.rb", "lib/travis/api/v3/renderer/repositories.rb",
"lib/travis/api/v3/renderer/repository.rb", "lib/travis/api/v3/renderer/repository.rb",
"lib/travis/api/v3/renderer/request.rb",
"lib/travis/api/v3/renderer/requests.rb", "lib/travis/api/v3/renderer/requests.rb",
"lib/travis/api/v3/renderer/user.rb", "lib/travis/api/v3/renderer/user.rb",
"lib/travis/api/v3/result.rb", "lib/travis/api/v3/result.rb",
@ -245,19 +282,34 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/services.rb", "lib/travis/api/v3/services.rb",
"lib/travis/api/v3/services/accounts/for_current_user.rb", "lib/travis/api/v3/services/accounts/for_current_user.rb",
"lib/travis/api/v3/services/branch/find.rb", "lib/travis/api/v3/services/branch/find.rb",
"lib/travis/api/v3/services/branches/find.rb",
"lib/travis/api/v3/services/broadcasts/for_current_user.rb",
"lib/travis/api/v3/services/build/cancel.rb",
"lib/travis/api/v3/services/build/find.rb", "lib/travis/api/v3/services/build/find.rb",
"lib/travis/api/v3/services/build/restart.rb",
"lib/travis/api/v3/services/builds/find.rb",
"lib/travis/api/v3/services/job/cancel.rb",
"lib/travis/api/v3/services/job/debug.rb",
"lib/travis/api/v3/services/job/find.rb",
"lib/travis/api/v3/services/job/restart.rb",
"lib/travis/api/v3/services/jobs/find.rb",
"lib/travis/api/v3/services/lint/lint.rb",
"lib/travis/api/v3/services/organization/find.rb", "lib/travis/api/v3/services/organization/find.rb",
"lib/travis/api/v3/services/organization/sync.rb", "lib/travis/api/v3/services/organization/sync.rb",
"lib/travis/api/v3/services/organizations/for_current_user.rb", "lib/travis/api/v3/services/organizations/for_current_user.rb",
"lib/travis/api/v3/services/owner/find.rb", "lib/travis/api/v3/services/owner/find.rb",
"lib/travis/api/v3/services/repositories/for_current_user.rb", "lib/travis/api/v3/services/repositories/for_current_user.rb",
"lib/travis/api/v3/services/repositories/for_owner.rb",
"lib/travis/api/v3/services/repository/disable.rb", "lib/travis/api/v3/services/repository/disable.rb",
"lib/travis/api/v3/services/repository/enable.rb", "lib/travis/api/v3/services/repository/enable.rb",
"lib/travis/api/v3/services/repository/find.rb", "lib/travis/api/v3/services/repository/find.rb",
"lib/travis/api/v3/services/repository/star.rb",
"lib/travis/api/v3/services/repository/unstar.rb",
"lib/travis/api/v3/services/requests/create.rb", "lib/travis/api/v3/services/requests/create.rb",
"lib/travis/api/v3/services/requests/find.rb", "lib/travis/api/v3/services/requests/find.rb",
"lib/travis/api/v3/services/user/current.rb", "lib/travis/api/v3/services/user/current.rb",
"lib/travis/api/v3/services/user/find.rb", "lib/travis/api/v3/services/user/find.rb",
"lib/travis/api/v3/services/user/sync.rb",
"lib/travis/api/workers/build_cancellation.rb", "lib/travis/api/workers/build_cancellation.rb",
"lib/travis/api/workers/build_restart.rb", "lib/travis/api/workers/build_restart.rb",
"lib/travis/api/workers/job_cancellation.rb", "lib/travis/api/workers/job_cancellation.rb",
@ -280,6 +332,8 @@ Gem::Specification.new do |s|
"script/console", "script/console",
"script/repos_stats.rb", "script/repos_stats.rb",
"script/server", "script/server",
"script/web_concurrency",
"spec/active_record_postgres_variables_spec.rb",
"spec/integration/error_handling_spec.rb", "spec/integration/error_handling_spec.rb",
"spec/integration/formats_handling_spec.rb", "spec/integration/formats_handling_spec.rb",
"spec/integration/responders_spec.rb", "spec/integration/responders_spec.rb",
@ -344,7 +398,7 @@ Gem::Specification.new do |s|
"spec/unit/endpoint/lint_spec.rb", "spec/unit/endpoint/lint_spec.rb",
"spec/unit/endpoint/logs_spec.rb", "spec/unit/endpoint/logs_spec.rb",
"spec/unit/endpoint/repos_spec.rb", "spec/unit/endpoint/repos_spec.rb",
"spec/unit/endpoint/requests_spec.rb", "spec/unit/endpoint/requests/throttle_spec.rb",
"spec/unit/endpoint/users_spec.rb", "spec/unit/endpoint/users_spec.rb",
"spec/unit/endpoint_spec.rb", "spec/unit/endpoint_spec.rb",
"spec/unit/extensions/expose_pattern_spec.rb", "spec/unit/extensions/expose_pattern_spec.rb",
@ -358,20 +412,40 @@ Gem::Specification.new do |s|
"spec/unit/middleware/user_agent_tracker_spec.rb", "spec/unit/middleware/user_agent_tracker_spec.rb",
"spec/unit/responders/json_spec.rb", "spec/unit/responders/json_spec.rb",
"spec/unit/responders/service_spec.rb", "spec/unit/responders/service_spec.rb",
"spec/v3/error_handling_spec.rb",
"spec/v3/extensions/belongs_to_spec.rb", "spec/v3/extensions/belongs_to_spec.rb",
"spec/v3/metrics_spec.rb",
"spec/v3/renderer/avatar_url_spec.rb", "spec/v3/renderer/avatar_url_spec.rb",
"spec/v3/result_spec.rb", "spec/v3/result_spec.rb",
"spec/v3/service_index_spec.rb", "spec/v3/service_index_spec.rb",
"spec/v3/services/accounts/for_current_user_spec.rb", "spec/v3/services/accounts/for_current_user_spec.rb",
"spec/v3/services/branch/find_spec.rb", "spec/v3/services/branch/find_spec.rb",
"spec/v3/services/branches/find_spec.rb",
"spec/v3/services/broadcasts/for_current_user_spec.rb",
"spec/v3/services/build/cancel_spec.rb",
"spec/v3/services/build/find_spec.rb",
"spec/v3/services/build/restart_spec.rb",
"spec/v3/services/builds/find_spec.rb",
"spec/v3/services/job/cancel_spec.rb",
"spec/v3/services/job/debug_sepc.rb",
"spec/v3/services/job/find_spec.rb",
"spec/v3/services/job/restart_spec.rb",
"spec/v3/services/jobs/find_spec.rb",
"spec/v3/services/lint/lint_spec.rb",
"spec/v3/services/organization/find_spec.rb", "spec/v3/services/organization/find_spec.rb",
"spec/v3/services/organizations/for_current_user_spec.rb", "spec/v3/services/organizations/for_current_user_spec.rb",
"spec/v3/services/owner/find_spec.rb", "spec/v3/services/owner/find_spec.rb",
"spec/v3/services/repositories/for_current_user_spec.rb", "spec/v3/services/repositories/for_current_user_spec.rb",
"spec/v3/services/repositories/for_owner_spec.rb",
"spec/v3/services/repository/disable_spec.rb",
"spec/v3/services/repository/enable_spec.rb",
"spec/v3/services/repository/find_spec.rb", "spec/v3/services/repository/find_spec.rb",
"spec/v3/services/repository/star_spec.rb",
"spec/v3/services/repository/unstar_spec.rb",
"spec/v3/services/requests/create_spec.rb", "spec/v3/services/requests/create_spec.rb",
"spec/v3/services/user/current_spec.rb", "spec/v3/services/user/current_spec.rb",
"spec/v3/services/user/find_spec.rb", "spec/v3/services/user/find_spec.rb",
"spec/v3/services/user/sync_spec.rb",
"tmp/.gitkeep", "tmp/.gitkeep",
"travis-api.gemspec" "travis-api.gemspec"
] ]