The public Travis API
Go to file
Mathias Meyer a7f0a861cb Fetch last build if no branch specified.
This restores backwards compatibility with the current behaviour
rather than defaulting to master. Though the latter would probably
the right thing to do in the longer term.
2014-06-18 11:55:26 +02:00
bin Add an empty bin/start-nginx wrapper, to allow running Procfile locally 2013-11-05 12:28:13 +01:00
config Remove New Relic 2014-04-09 05:25:00 -05:00
lib Fetch last build if no branch specified. 2014-06-18 11:55:26 +02:00
public Add SVG badges. 2014-03-19 14:15:13 +01:00
script Remove New Relic 2014-04-09 05:25:00 -05:00
spec Merge branch 'master' into ha-feature-remove_log_endpoint 2014-06-17 10:40:30 -04: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 log dir 2013-01-19 22:36:58 +01:00
.travis.yml Merge branch 'master' into ha-feature-remove_log_endpoint 2014-06-17 10:40:30 -04:00
config.ru Remove RackTimer. 2014-04-22 19:07:39 +02:00
CONTRIBUTING.md First cut generic Contributing.md file for Travis 2013-03-18 23:07:55 -03:00
Gemfile add endpoint for linting 2014-06-17 12:14:10 +02:00
Gemfile.lock Bring travis-core up to date 2014-06-17 09:57:11 -04:00
Procfile Try nginx 2013-09-02 09:52:26 +02:00
Rakefile Add path for structrure.sql 2013-12-04 13:25:48 +01:00
README.md Update README [skip ci] 2014-06-11 21:10:15 -04:00
set_up_travis_logs.sh Use bash function, not PowerShell 2014-06-11 11:28:42 -04:00
travis-api.gemspec Update gemspec once again 2014-06-17 10:43:52 -04: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