2. Continuous Integration is a software
development practice where members
of a team integrate their work
frequently ... verified by an automated
build (including test) to detect
integration errors
- Martin Fowler
3. Travis CI is ...
• An Open Source
• Distributed
• Build System
• for the Open Source Community
4. Open Source ...
• Brain child of Sven Fuchs
• travis.heroku.com (December, 2010)
• Travis-CI (and subprojects) are open source
• github.com/travis-ci
• 20 members and growing
• Considered “Alpha” (but very functional)
5. Distributed ...
allows users to contribute build
capacities by connecting a VM that
runs a build agent somewhere on their
underused servers
• Travis-CI -- the web application runs on Heroku
• But Travis workers,VMs that run the builds, are
contributed by users
36. The “Hosh” Factor
What metrics do you use when evaluating
gems and applications?
• GitHub watchers and forks
• RubyGems.org download count
• Recent commit activity
• Travis Build Status and History
37. In the works ...
• RabbitMQ replacing Resque
• SproutCore replacing Backbone.js
• Travis API
• Private Repos*
Sven’s Mantra
“Do the simplest thing possible then Improve”
What is CI? It’s just not for teams. Integration can mean external services and platforms and runtimes.\n
\n
Sven Fuchs - i18n, Globalize3, ... \n
Widespread distribution is still WIP\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
Rails / RubyGems / Sinatra etc.\n
Clojure / Erlang / NodeJS / Scala\n
\n
Organization Repositories are supported ... you just have to enable the service hook from GitHub\nWHAT NEXT?!\n
\n
Default build sequence w/o custom config\n
\n
\n
Campfire is in progress\n
\n
\n
\n
\n
\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
No practical limitations; defined by Travis Worker Chef Cookbooks\n
\n
\n
\n
\n
First 3 items are actively being worked on\nPrivate repo support is obvious enhancement; but focus is on community support at this point\n
simple_states: a state machine (akin to state_machine and aasm)\ndata_migrations: DSL for Rails migrations with data changes (e.g. in prod environments)\nhashr: makes working with nested hashes easier\n
\n
\n
\n
I like to think of this Travis ... getting in your face when your app won’t build!\n