The public Travis API
Go to file
Piotr Sarnacki 6e5f225a1c Don't reset the value if a new value is provided
If a value is provided with a request to update the record, we should
not nullify it. We don't send decrypted private values to the client, so
if client provides it, it's probably pasted by the user.
2014-09-10 11:02:24 +02:00
bin Add an empty bin/start-nginx wrapper, to allow running Procfile locally 2013-11-05 12:28:13 +01:00
config Revert "Revert "Serve CORS from app"" 2014-06-20 12:57:36 +02:00
lib Don't reset the value if a new value is provided 2014-09-10 11:02:24 +02:00
public Update badges to latest shields.io spec 2014-08-29 15:46:16 -04:00
script Remove New Relic 2014-04-09 05:25:00 -05:00
spec Don't reset the value if a new value is provided 2014-09-10 11:02:24 +02:00
tmp Add Skylight stuff 2014-04-09 02:57:34 -05:00
.buildpacks Try nginx 2013-09-02 09:52:26 +02:00
.gitignore Ignore vendor. 2014-06-18 11:55:27 +02:00
.travis.yml Disable sudo 2014-07-30 16:48:15 +02: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 Use travis-core from master 2014-09-02 11:47:58 +02:00
Gemfile.lock Use travis-core from master 2014-09-02 11:47:58 +02:00
Procfile Try nginx 2013-09-02 09:52:26 +02:00
Rakefile Run core's extra migrations without JRuby 2014-06-18 14:54:38 -04:00
README.md Update README [skip ci] 2014-06-11 21:10:15 -04:00
travis-api.gemspec Remove Skylight 2014-07-29 11:21:34 +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

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