Auto-merged master into cd-v3 on deployment.
This commit is contained in:
commit
866fd2a617
8
Gemfile
8
Gemfile
|
@ -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
|
||||||
|
|
26
Gemfile.lock
26
Gemfile.lock
|
@ -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!
|
||||||
|
|
75
README.md
75
README.md
|
@ -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
|
||||||
|
|
||||||
|
|
30
Rakefile
30
Rakefile
|
@ -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 }
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 == {
|
||||||
|
|
|
@ -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"
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user