The public Travis API
Go to file
2015-10-20 14:17:03 +02:00
bin set tmp_dir in script/server 2015-10-09 09:19:07 +02:00
config $tmp_dir is not set on heroku 2015-10-09 09:17:21 +02:00
lib v3: list sortable fields in service index 2015-10-13 17:40:58 +02:00
public Use brightgreen color for passing builds. 2014-12-10 12:57:45 +01:00
script 50 unicorn workers on heroku is ideal, as heroku hands 50 requests to the dyno 2015-10-13 12:22:07 +02:00
spec add another avatar spec 2015-10-15 10:40:30 +02:00
tmp Add Skylight stuff 2014-04-09 02:57:34 -05:00
.buildpacks add nginx buildpack 2015-10-09 08:47:55 +02:00
.gitignore reinstate nginx, use it in development, add smare concurrency settings 2015-10-08 13:57:49 +02: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 try out jemalloc 2015-06-28 01:23:01 -05:00
Gemfile.lock update travis-support 2015-10-08 11:40:43 +02:00
LICENSE seems we don't have a license 2015-07-15 20:51:57 +02:00
Procfile no double je 2015-10-09 09:02:10 +02:00
Rakefile try fixing db setup for travis 2014-10-07 16:48:21 +02:00
README.md Update README.md 2015-10-20 14:17:03 +02:00
travis-api.gemspec relax dependency for pg, remove thin 2015-05-21 18:23:33 +02: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
  4. Nginx *NB: If working on Ubuntu please install Nginx manually from source. This guide is helpful but make sure you install the latest stable version and don't follow any configuration steps. Travius-api will start run and configure its own nginx server.

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

$ bundle exec 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