SlideShare una empresa de Scribd logo
1 de 42
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
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
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"
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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

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

Similar a Travis CI

Web Developing In Search
Web Developing In SearchWeb Developing In Search
Web Developing In Search
Frank Xu
 
Virtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profitVirtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profit
Andreas Heim
 

Similar a Travis CI (20)

Drupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study CaseDrupal & Continous Integration - SF State Study Case
Drupal & Continous Integration - SF State Study Case
 
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
 
Web Developing In Search
Web Developing In SearchWeb Developing In Search
Web Developing In Search
 
The journey to GitOps
The journey to GitOpsThe journey to GitOps
The journey to GitOps
 
Git Going with DVCS v1.6.0
Git Going with DVCS v1.6.0Git Going with DVCS v1.6.0
Git Going with DVCS v1.6.0
 
Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad Decisions
 
Ruby Under The Hood
Ruby Under The HoodRuby Under The Hood
Ruby Under The Hood
 
インフラエンジニアのためのGit入門
インフラエンジニアのためのGit入門インフラエンジニアのためのGit入門
インフラエンジニアのためのGit入門
 
Git
GitGit
Git
 
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Git Heaven with Wakanda
Git Heaven with WakandaGit Heaven with Wakanda
Git Heaven with Wakanda
 
Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10
 
git and github
git and githubgit and github
git and github
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Version Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part IVersion Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part I
 
Virtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profitVirtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profit
 
OpenWhisk Go Runtime
OpenWhisk Go RuntimeOpenWhisk Go Runtime
OpenWhisk Go Runtime
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 
How to distribute Ruby to the world
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the world
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

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
  • 18.
  • 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
  • 21.
  • 22.
  • 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"
  • 33.
  • 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

Notas del editor

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