The public Travis API
Go to file
carlad 8f6083117c add async method to send exception error to sentry
add ErrorHandling class, refactor spec

correct the raven config class

correct the raven test

add a fake method for getting an exception

require error_handling

add new TestError class to test exceptions

add correct error class to test

add rescue block to raven send

make method a class method and add a test Travis.config.dns

add error the repos to test error

remove carla method in repos

add a fake error in repos

delete carla method
2015-02-13 16:16:45 +01:00
bin Add an empty bin/start-nginx wrapper, to allow running Procfile locally 2013-11-05 12:28:13 +01:00
config Don't use nginx 2014-09-25 13:09:52 +02:00
lib add async method to send exception error to sentry 2015-02-13 16:16:45 +01:00
public Use brightgreen color for passing builds. 2014-12-10 12:57:45 +01:00
script add repos stats script 2014-10-07 16:47:09 +02:00
spec add async method to send exception error to sentry 2015-02-13 16:16:45 +01:00
tmp Add Skylight stuff 2014-04-09 02:57:34 -05:00
.buildpacks Don't use nginx 2014-09-25 13:09:52 +02:00
.gitignore Revert "Revert "Merge branch 'master' of github.com:travis-ci/travis-api"" 2015-01-27 16:22:30 +01:00
.ruby-version use ruby 2.1.5 2015-01-13 18:57:32 +01:00
.travis.yml use ruby 2.1.5 2015-01-13 18:57:32 +01:00
config.ru Update travis-support to sans-newrelic version 2014-07-29 11:30:11 +02:00
CONTRIBUTING.md First cut generic Contributing.md file for Travis 2013-03-18 23:07:55 -03:00
Gemfile Revert "Revert "Merge branch 'master' of github.com:travis-ci/travis-api"" 2015-01-27 16:22:30 +01:00
Gemfile.lock Revert "Revert "Merge branch 'master' of github.com:travis-ci/travis-api"" 2015-01-27 16:22:30 +01:00
Procfile Revert "Revert "Merge branch 'master' of github.com:travis-ci/travis-api"" 2015-01-27 16:22:30 +01:00
Rakefile try fixing db setup for travis 2014-10-07 16:48:21 +02:00
README.md Update README [skip ci] 2014-06-11 21:10:15 -04:00
travis-api.gemspec Merge branch 'master' into rkh-v3 2015-01-21 16:52:21 +01:00

The public Travis API

This is the app running on https://api.travis-ci.org/

Requirements

  1. PostgreSQL 9.3 or higher
  2. Redis
  3. RabbitMQ

Installation

Setup

$ bundle install

Database setup

  1. rake db:create db:structure:load
  2. Clone travis-logs and copy the logs database (assume the PostgreSQL user is postgres):
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

Repeat the database steps for RAILS_ENV=test.

RAILS_ENV=test rake db:create db:structure:load
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

$ rake spec

Run the server

$ script/server

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

API documentation

We use source code comments to add documentation. If the server is running, you can browse an HTML documenation at /docs.

Project architecture

lib
`-- travis
    `-- api
        `-- app
            |-- endpoint    # API endpoints
            |-- extensions  # Sinatra extensions
            |-- helpers     # Sinatra helpers
            `-- middleware  # Rack middleware

Classes inheriting from Endpoint or Middleware, they will automatically be set up properly.

Each endpoint class gets mapped to a prefix, which defaults to the snake-case class name (i.e. Travis::Api::App::Profile will map to /profile). It can be overridden by setting :prefix:

require 'travis/api/app'

class Travis::Api::App
  class MyRouts < Endpoint
    set :prefix, '/awesome'
  end
end