SlideShare a Scribd company logo
T
Travis CI
A Distributed Build Platform for Open Source
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
Travis CI is ...

• An Open Source
• Distributed
• Build System
• for the Open Source Community
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)
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
Build System ...
Build System ...

           repo

git push
Build System ...

           repo
                         travis
git push          hook
Build System ...

           repo
                         travis
git push          hook
                                  tasks
Build System ...

           repo
                         travis
git push          hook                    task
                                  tasks
Build System ...
                         git clone

           repo
                           travis
git push          hook                       task
                                     tasks
Build System ...
                         git clone

           repo                      status
                           travis
git push          hook                         task
                                       tasks
Build System ...
                         git clone

           repo                      status
                           travis
git push          hook                         task
                                       tasks
Build System ...
                         git clone

           repo                      status
                           travis
git push          hook                         task
                                       tasks
                          updates
Open Source Community
 • Travis CI is free to use for any public
   GitHub project
 • Travis is great for any Ruby project
But Can Also Build ...


   clojure
Getting Started ...

1. Sign up with Travis CI using
   your GitHub account
2. Enable the repositories that
   you want Travis to build
Travis CI
git push
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
Travis CI
Travis CI
Announce Your Build
      Status!

• Status Images
• E-mail Notifications
• IRC Notifications
E-mail Notification ...
Build Matrix ...
• Defined by your .travis.yml
• Configure ...
 • Ruby versions (rvm)
 • Custom Gemfiles
 • Environment Variables
• Script to run
Jsonify .travis.yml
rvm:
  - 1.9.3
  - 1.9.2
  - 1.8.7
  - jruby
  - rbx-2.0
env:
  - RAILS_VERSION='~>3.0.0'
  - RAILS_VERSION='>=3.1.0'
Jsonify .travis.yml
                    10
rvm:
  - 1.9.3
  - 1.9.2
                        Builds
  - 1.8.7
  - jruby
  - rbx-2.0
env:
  - RAILS_VERSION='~>3.0.0'
  - RAILS_VERSION='>=3.1.0'
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
Built-in DB Support
        SQLite3
                           MySQL
PostgreSQL
               MongoDB
    All Available with no extra setup required
What about ? ? ?
What about ? ? ?
 Redis
             sphinx   memcached

          CouchDB python
OpenJDK
                 ImageMagick
 Selenium     Riak
Vanity .travis.yml
rvm:
 - 1.8.7
 - 1.9.2
gemfile:
 - Gemfile
env:
 - DB=mongodb
 - DB=redis
 - DB=mysql
before_script:
 - "mysql -e 'create database vanity_test;' >/dev/null"
Travis CI
The “Hosh” Factor
The “Hosh” Factor
What metrics do you use when evaluating
       gems and applications?
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
In the works ...
  • RabbitMQ replacing Resque
  • SproutCore replacing Backbone.js
  • Travis API
  • Private Repos*
               Sven’s Mantra
“Do the simplest thing possible then Improve”
Interesting Svenisms ...

•   simple_states
•   data_migrations
•   hashr
Get Involved ...

1. put your apps on Travis
2. about.travis-ci.org
3. #travis on freenode
Is This Travis ?
Travis the Tractor
Travis Bickle

More Related Content

PDF
Git 101: Git and GitHub for Beginners
PDF
Travis-CI - Continuos integration in the cloud for PHP
KEY
Travis CI: Fun and easy CI for your Plone packages
PPTX
Continuous integration ( jen kins travis ci)
PDF
Gitlab and Lingvokot
PPT
Introduction to Git for developers
PDF
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Git 101: Git and GitHub for Beginners
Travis-CI - Continuos integration in the cloud for PHP
Travis CI: Fun and easy CI for your Plone packages
Continuous integration ( jen kins travis ci)
Gitlab and Lingvokot
Introduction to Git for developers
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose

What's hot (20)

PPTX
CI/CD Pipeline with Docker
KEY
Make It Cooler: Using Decentralized Version Control
PDF
(Declarative) Jenkins Pipelines
PDF
FOSDEM 2017: GitLab CI
PPT
Jenkins Scriptler in 90mins
PDF
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
PDF
Using GitLab CI
PPTX
Introducing "Tugbot" for Docker Containers
PPTX
Tugbot - Testing Framework for Docker Containers
PPTX
Workflows using Git GitHub | Edureka
PDF
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
PDF
2015 05-06-elias weingaertner-docker-intro
PDF
CI with Gitlab & Docker
PPTX
Continuous Integration With Jenkins Docker SQL Server
PPTX
Grooving with Jenkins
PDF
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
PPTX
7 Habits of Highly Effective Jenkins Users
PDF
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
PDF
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
PPTX
Jenkins days workshop pipelines - Eric Long
CI/CD Pipeline with Docker
Make It Cooler: Using Decentralized Version Control
(Declarative) Jenkins Pipelines
FOSDEM 2017: GitLab CI
Jenkins Scriptler in 90mins
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
Using GitLab CI
Introducing "Tugbot" for Docker Containers
Tugbot - Testing Framework for Docker Containers
Workflows using Git GitHub | Edureka
Voxxed Luxembourd 2016 Jenkins 2.0 et Pipeline as code
2015 05-06-elias weingaertner-docker-intro
CI with Gitlab & Docker
Continuous Integration With Jenkins Docker SQL Server
Grooving with Jenkins
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
7 Habits of Highly Effective Jenkins Users
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
Jenkins days workshop pipelines - Eric Long
Ad

Similar to Travis CI (20)

PDF
TRAVIS CI-KNOLX
PDF
2012 12-08-travis-ci-could-do
PDF
Continuous Integration
PDF
Show an Open Source Project Some Love and Start Using Travis-CI
PDF
GTFO: Git Theory For OpenSource
PDF
Continuous Integration for your Android projects
PDF
Using Travis CI to Test and Deploy Plugins
PDF
M.Mozūras - git
ODP
Develop and Maintain a Distro with Open Build Service
PDF
Intermediate git
PPTX
Cd with Github Travis CI and Heroku
PDF
My "Perfect" Toolchain Setup for Grails Projects
PDF
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
PDF
Using Subversion and Git Together
KEY
Git Basics Philips
PDF
PDF
Travis ci
PPTX
2018 RubyHACK: put git to work - increase the quality of your rails project...
PDF
Android + jenkins
PDF
Git for the Android Developer
TRAVIS CI-KNOLX
2012 12-08-travis-ci-could-do
Continuous Integration
Show an Open Source Project Some Love and Start Using Travis-CI
GTFO: Git Theory For OpenSource
Continuous Integration for your Android projects
Using Travis CI to Test and Deploy Plugins
M.Mozūras - git
Develop and Maintain a Distro with Open Build Service
Intermediate git
Cd with Github Travis CI and Heroku
My "Perfect" Toolchain Setup for Grails Projects
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Using Subversion and Git Together
Git Basics Philips
Travis ci
2018 RubyHACK: put git to work - increase the quality of your rails project...
Android + jenkins
Git for the Android Developer
Ad

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Developing a website for English-speaking practice to English as a foreign la...
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PPT
What is a Computer? Input Devices /output devices
PDF
STKI Israel Market Study 2025 version august
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
TLE Review Electricity (Electricity).pptx
PPT
Module 1.ppt Iot fundamentals and Architecture
PPTX
The various Industrial Revolutions .pptx
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
1. Introduction to Computer Programming.pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
Modernising the Digital Integration Hub
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Getting started with AI Agents and Multi-Agent Systems
NewMind AI Weekly Chronicles - August'25-Week II
Programs and apps: productivity, graphics, security and other tools
Developing a website for English-speaking practice to English as a foreign la...
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
WOOl fibre morphology and structure.pdf for textiles
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
observCloud-Native Containerability and monitoring.pptx
A contest of sentiment analysis: k-nearest neighbor versus neural network
What is a Computer? Input Devices /output devices
STKI Israel Market Study 2025 version august
A novel scalable deep ensemble learning framework for big data classification...
TLE Review Electricity (Electricity).pptx
Module 1.ppt Iot fundamentals and Architecture
The various Industrial Revolutions .pptx
Univ-Connecticut-ChatGPT-Presentaion.pdf
1. Introduction to Computer Programming.pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Modernising the Digital Integration Hub
A comparative study of natural language inference in Swahili using monolingua...
Getting started with AI Agents and Multi-Agent Systems

Travis CI

  • 1. T Travis CI A Distributed Build Platform for Open Source
  • 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
  • 7. Build System ... repo git push
  • 8. Build System ... repo travis git push hook
  • 9. Build System ... repo travis git push hook tasks
  • 10. Build System ... repo travis git push hook task tasks
  • 11. Build System ... git clone repo travis git push hook task tasks
  • 12. Build System ... git clone repo status travis git push hook task tasks
  • 13. Build System ... git clone repo status travis git push hook task tasks
  • 14. Build System ... git clone repo status travis git push hook task tasks updates
  • 15. Open Source Community • Travis CI is free to use for any public GitHub project • Travis is great for any Ruby project
  • 16. But Can Also Build ... clojure
  • 17. Getting Started ... 1. Sign up with Travis CI using your GitHub account 2. Enable the repositories that you want Travis to build
  • 20. 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
  • 23. Announce Your Build Status! • Status Images • E-mail Notifications • IRC Notifications
  • 25. Build Matrix ... • Defined by your .travis.yml • Configure ... • Ruby versions (rvm) • Custom Gemfiles • Environment Variables • Script to run
  • 26. Jsonify .travis.yml rvm:   - 1.9.3   - 1.9.2   - 1.8.7   - jruby   - rbx-2.0 env:   - RAILS_VERSION='~>3.0.0'   - RAILS_VERSION='>=3.1.0'
  • 27. Jsonify .travis.yml 10 rvm:   - 1.9.3   - 1.9.2 Builds   - 1.8.7   - jruby   - rbx-2.0 env:   - RAILS_VERSION='~>3.0.0'   - RAILS_VERSION='>=3.1.0'
  • 28. 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
  • 29. Built-in DB Support SQLite3 MySQL PostgreSQL MongoDB All Available with no extra setup required
  • 31. What about ? ? ? Redis sphinx memcached CouchDB python OpenJDK ImageMagick Selenium Riak
  • 32. Vanity .travis.yml rvm: - 1.8.7 - 1.9.2 gemfile: - Gemfile env: - DB=mongodb - DB=redis - DB=mysql before_script: - "mysql -e 'create database vanity_test;' >/dev/null"
  • 35. The “Hosh” Factor What metrics do you use when evaluating gems and applications?
  • 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”
  • 38. Interesting Svenisms ... • simple_states • data_migrations • hashr
  • 39. Get Involved ... 1. put your apps on Travis 2. about.travis-ci.org 3. #travis on freenode

Editor's Notes

  • #2: \n
  • #3: What is CI? It’s just not for teams. Integration can mean external services and platforms and runtimes.\n
  • #4: \n
  • #5: Sven Fuchs - i18n, Globalize3, ... \n
  • #6: Widespread distribution is still WIP\n
  • #7: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #8: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #9: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #10: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #11: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #12: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #13: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #14: Message Que originally Resque; migrating to Rabbit MQ (AMQP)\nBrowser app is currently Backbone.js; migrating to SproutCore\n
  • #15: Rails / RubyGems / Sinatra etc.\n
  • #16: Clojure / Erlang / NodeJS / Scala\n
  • #17: \n
  • #18: Organization Repositories are supported ... you just have to enable the service hook from GitHub\nWHAT NEXT?!\n
  • #19: \n
  • #20: Default build sequence w/o custom config\n
  • #21: \n
  • #22: \n
  • #23: Campfire is in progress\n
  • #24: \n
  • #25: \n
  • #26: \n
  • #27: \n
  • #28: \n
  • #29: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #30: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #31: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #32: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #33: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #34: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #35: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #36: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #37: No practical limitations; defined by Travis Worker Chef Cookbooks\n
  • #38: \n
  • #39: \n
  • #40: \n
  • #41: \n
  • #42: First 3 items are actively being worked on\nPrivate repo support is obvious enhancement; but focus is on community support at this point\n
  • #43: 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
  • #44: \n
  • #45: \n
  • #46: \n
  • #47: I like to think of this Travis ... getting in your face when your app won’t build!\n