Giter VIP home page Giter VIP logo

travis-ci's Introduction

What is Travis CI

A distributed build system for the open source community

Goals

Travis is an attempt to create an open-source, distributed build system for the OSS community that:

1. Allows open-source projects to effortlessly register their GitHub repository and have their test suites run after pushes
2. Allows users to contribute build capacity by connecting a machine that runs Travis workers and VMs they use on their underused servers

With Travis CI our vision is to become for builds (i.e. tests, for starters) what services like rubygems.org or Maven Central are for distribution of libraries.
We strive to build a rock solid, but dead-easy to use open-source continuous integration service for the open source community.

See It In Action

You can see Travis CI in action at travis-ci.org. With about 1 year in operation, we have some prominent open source projects trusting travis-ci.org to run their continuous integration:

We Are Not Done Yet

Please note that this is a work in progress. We have only reached our goal #1 so far. We try to follow the 80/20 for requirements. I.e. we focus on the most common use cases.

Travis CI is not currently a good fit for closed in-house installations: there are multiple applications that evolve
rapidly and workers need VMs running on the same host. Ask on the IRC channel for more information.

You can also watch this (a year old but still valid) screencast to get an idea: 1:20 quick demo screencast

Get In Touch!

User Documentation

We care about our documentation and make sure our documentation guides are clearly
written and up-to-date. Please make sure you read them. Two key guides are

and we also have guides technology-specific guides:

Technical Overview

Travis consists of several parts:

  • An Ember.js-based single-page application that runs client side.
  • A Rails 3 application that serves to the in-browser application and takes pings from Github.
  • A JRuby and AMQP powered worker for running a project’s test suite in snapshotted virtual machines.
  • A websocket server (we use Pusher) for tailing build results to the browser.
  • A JRuby-based AMQP daemon that collects build reports, workers state, propagates them to Pusher, delivers notifications and so on.
  • Chef cookbooks that are used to provision the Travis CI environment (to provide databases, RabbitMQ, Rubies/JDK/Node.js versions and so on) and tools that build VM images.

All these applications, tools and libraries are hosted under Travis CI github organization.
This particular repository is the site that powers travis-ci.org.

A more detailed overview is available in our Technical Overview guide aimed at developers.

Setting server environment up

The setup consists of following steps:

$ bundle install
$ bundle exec rake travis:setup:config

This will create two files: ./config/travis.yml and ./config/database.yml. Edit these files according to your local configuration.

Travis CI is configured to authenticate with OAuth and github. You’ll need to register your application with github (even if it’s only for local development) and complete all the required fields in ./config/travis.yml for your ID and secret.

Next, tell Travis to configure the database:

$ bundle exec rake travis:setup

Install and start RabbitMQ server.

And finally start the server:

$ bundle exec foreman start

Note that you always start the server using foreman, not unicorn or webrick

Travis CI is now up & running on http://localhost:5000

Working on the server

Running the tests

Integration tests are implemented using Jasmine and can be run in the browser:

To run the whole test suite simply do:

$ bundle exec rake test:ci

To run only the jasmine specs do:

$ bundle exec rake test:jasmine

In order to run all tests you need to have ChromeDriver installed. You can download it here and then place it somewhere on your PATH.

Generating and loading seed data

  ; generate seeds
  $ heroku run 'cat db/seeds.yml | thor travis:db:seeds' -rproduction > db/seeds/data.sql

  ; load seeds
  $ rake db:seed

  ; or
  $ psql travis_development < db/seeds/data.sql

Dependency Status

Developer Documentation

Please keep in mind that Travis CI evolves rapidly and this documentation may be outdated. Development, travis-ci.org maintenance and
user documentation take priority.

History

Design Iterations

Other sources

Requirements

  • Ruby 1.9.3
  • PostgreSQL for the pg gem

travis-ci's People

Contributors

bsiggelkow avatar dhiemstra avatar dmathieu avatar drogus avatar flippingbits avatar franckverrot avatar fxposter avatar hoverlover avatar ifesdjeen avatar joshk avatar kl-7 avatar lenary avatar loicfrering avatar lukaszx0 avatar lukeredpath avatar michaelklishin avatar mmalecki avatar ndbroadbent avatar parndt avatar rkh avatar roidrage avatar rubiii avatar sarahhodne avatar sethvargo avatar sferik avatar simi avatar svenfuchs avatar sweed avatar tilsammans avatar tjeden avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.