Travis CI

7,090 views
6,954 views

Published on

Travis CI is a distributed build platform that provides continuous integration services for open source projects.

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,090
On SlideShare
0
From Embeds
0
Number of Embeds
3,742
Actions
Shares
0
Downloads
45
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • \n
  • 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
  • Travis CI

    1. 1. TTravis CIA Distributed Build Platform for Open Source
    2. 2. Continuous Integration is a softwaredevelopment practice where members of a team integrate their workfrequently ... verified by an automated build (including test) to detect integration errors - Martin Fowler
    3. 3. Travis CI is ...• An Open Source• Distributed• Build System• for the Open Source Community
    4. 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. 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
    6. 6. Build System ...
    7. 7. Build System ... repogit push
    8. 8. Build System ... repo travisgit push hook
    9. 9. Build System ... repo travisgit push hook tasks
    10. 10. Build System ... repo travisgit push hook task tasks
    11. 11. Build System ... git clone repo travisgit push hook task tasks
    12. 12. Build System ... git clone repo status travisgit push hook task tasks
    13. 13. Build System ... git clone repo status travisgit push hook task tasks
    14. 14. Build System ... git clone repo status travisgit push hook task tasks updates
    15. 15. Open Source Community • Travis CI is free to use for any public GitHub project • Travis is great for any Ruby project
    16. 16. But Can Also Build ... clojure
    17. 17. Getting Started ...1. Sign up with Travis CI using your GitHub account2. Enable the repositories that you want Travis to build
    18. 18. git push
    19. 19. A Travis Worker Builds Your Project...$ rvm use 1.8.7$ git clone git://github.com/YOUR/PROJECT.git$ bundle install --path vendor/bundle$ bundle exec rake
    20. 20. Announce Your Build Status!• Status Images• E-mail Notifications• IRC Notifications
    21. 21. E-mail Notification ...
    22. 22. Build Matrix ...• Defined by your .travis.yml• Configure ... • Ruby versions (rvm) • Custom Gemfiles • Environment Variables• Script to run
    23. 23. Jsonify .travis.ymlrvm:  - 1.9.3  - 1.9.2  - 1.8.7  - jruby  - rbx-2.0env:  - RAILS_VERSION=~>3.0.0  - RAILS_VERSION=>=3.1.0
    24. 24. Jsonify .travis.yml 10rvm:  - 1.9.3  - 1.9.2 Builds  - 1.8.7  - jruby  - rbx-2.0env:  - RAILS_VERSION=~>3.0.0  - RAILS_VERSION=>=3.1.0
    25. 25. But Wait ... There’s More!• before / after scripts• matrix exclusion matrix: { exclusion: [{ rvm: 1.8.7, env:RG=1.3.6 }]}• specify branches to build (white/blacklist) # blacklist branches: except: - legacy - experimental
    26. 26. Built-in DB Support SQLite3 MySQLPostgreSQL MongoDB All Available with no extra setup required
    27. 27. What about ? ? ?
    28. 28. What about ? ? ? Redis sphinx memcached CouchDB pythonOpenJDK ImageMagick Selenium Riak
    29. 29. Vanity .travis.ymlrvm: - 1.8.7 - 1.9.2gemfile: - Gemfileenv: - DB=mongodb - DB=redis - DB=mysqlbefore_script: - "mysql -e create database vanity_test; >/dev/null"
    30. 30. The “Hosh” Factor
    31. 31. The “Hosh” FactorWhat metrics do you use when evaluating gems and applications?
    32. 32. The “Hosh” FactorWhat 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
    33. 33. In the works ... • RabbitMQ replacing Resque • SproutCore replacing Backbone.js • Travis API • Private Repos* Sven’s Mantra“Do the simplest thing possible then Improve”
    34. 34. Interesting Svenisms ...• simple_states• data_migrations• hashr
    35. 35. Get Involved ...1. put your apps on Travis2. about.travis-ci.org3. #travis on freenode
    36. 36. Is This Travis ?
    37. 37. Travis the Tractor
    38. 38. Travis Bickle

    ×