SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
JJ

SHOW AN OPEN SOURCE PROJECT SOME LOVE
AND START USING TRAVIS-CI
Joel Byler
@joelbyler
January 10, 2014
CodeMash 2.0.1.4
Kalihari Resort
Sandusky, OH

Sunday, January 12, 14
WHO AM I?
 





JOEL BYLER

 Aspiring Software Craftsman
 Organizer for Cleveland Ruby

Brigade (aka CleRb)
 Enterprise Java developer
 Actively growing my Ruby and
JavaScript skills

Sunday, January 12, 14
WHO ARE YOU?
 Want to get involved in an Open

Source Project?
 Currently maintaining an Open
Source Project and interested in
your CI options?

Sunday, January 12, 14
COMMON PROBLEMS WHEN
SHARING SOURCE CODE
 Work’s on my machine syndrome
 Didn’t realize I need to test on that

version of ruby/node/etc.
 Pull requests - how do I know if
this will break the build?
 Would love run tests on commit,
but don’t have $$$ for equipment.

Sunday, January 12, 14
CONTINUOUS INTEGRATION
...is the practice, in software engineering, of merging all
developer working copies with a shared mainline several
times a day.
~Wikipedia
...is a software development practice where members of a
team integrate their work frequently
~Martin Fowler

Sunday, January 12, 14
CONTINUOUS INTEGRATION CONTD.
Once the code is built, all tests should run to confirm
that it behaves as the developers expect it to behave.
~Wikipedia
...verified by an automated build (including test) to detect
integration errors as quickly as possible...
~Martin Fowler

Sunday, January 12, 14
TRAVIS-CI
 Hosted
 Free for open-source projects
 Supports MANY Languages
 Can run against multiple

runtime versions
 MOAR!

Sunday, January 12, 14
You don’t have to take my word for it.

WHAT PEOPLE ARE SAYING

Sunday, January 12, 14
QUOTES
What Github did for sharing code, Travis CI will do for
testing code
- Brian Ford, Rubinius, @brixen

I'm sure there was life before @travisci, but I choose
to ignore it.
- Jeff Casimir, Jumpstart Lab/Hungry Academy @j3

I have used many CI systems, but Travis is the most
awesome one so far!!
- Aslak Hellesoy, THE Cucumber Guy, @aslak_hellesoy

Sunday, January 12, 14
TRAVIS BUILD LIFE-CYCLE
Any of the following steps will fail build when finishing
with a non-zero exit code
-clone github repository
-cd to new directory
-before_install:
prepare the system
-install:
install prerequisites or dependencies
-before_script:
prepare your build for testing
-script:
specific to project language
==== build will not fail past this step ====
-after_success:
-after_failure:
-after_script:

Sunday, January 12, 14
Test all the things!

LANGUAGES

Sunday, January 12, 14
WORKS FOR YOUR LANGUAGE
(PROBABLY)
C

JAVASCRIPT (WITH

C++

NODE.JS)
OBJECTIVE-C
PERL
PHP
PYTHON
RUBY
SCALA

CLOJURE
ERLANG
GO
GROOVY
HASKELL
JAVA

Sunday, January 12, 14
RUBY
.travis.yml

Super simple!

Sunday, January 12, 14
COMPLEX BUILD

Sunday, January 12, 14
JAVA
.travis.yml

Sunday, January 12, 14
JAVASCRIPT
travis.yml

Sunday, January 12, 14
THE BUILD IS PASSING!
badges for your website

Sunday, January 12, 14
DEMO
https://github.com/joelbyler/roman_numeral.js

 travis gem
 travis login & travis init
 notifications
 travis-lint gem for validation

Sunday, January 12, 14
DEMO
https://github.com/joelbyler/roman_numeral.js/blob/master/media/TravisCI.mov?raw=true

Sunday, January 12, 14
Sunday, January 12, 14
Sunday, January 12, 14
Know that merging a pull request won’t
break the build.

PULL REQUESTS

Sunday, January 12, 14
THE BUILD IS PASSING!

Sunday, January 12, 14
Why start trusting a human now?

AUTO DEPLOYMENT

Sunday, January 12, 14
CONTINUOUS DEPLOYMENT
In the same vein the practice of continuous delivery
further extends CI by making sure the software checked
in on the mainline is always in a state that can be
deployed to users and makes the actual deployment
process very rapid.
~Wikipedia
A natural consequence of this is that you should also
have scripts that allow you to deploy into production with
similar ease.
~Martin Fowler

Sunday, January 12, 14
DEPLOY YOUR CHANGES TO:
Heroku
Nodejitsu
Engine Yard
OpenShift
cloudControl
RubyGems
PyPI
NPM

Sunday, January 12, 14
A RUBY EXAMPLE, DEPLOY TO
RUBYGEMS.ORG

Sunday, January 12, 14
A NODE EXAMPLE, DEPLOY TO
NPMJS.ORG

Sunday, January 12, 14
ADVANCED FEATURES
 parallelized builds (unit vs int. tests)
 databases
 GUI & Headless browser testing

Sunday, January 12, 14
Not a sharer?

PRIVATE REPOSITORIES

Sunday, January 12, 14
PRICING

as of 1/9/2014

Sunday, January 12, 14
ALTERNATIVES
 drone.io (free for open source)
 werker.com (free beta)
 circleci.com
 cisimple.com
 tddium.com

Sunday, January 12, 14
RESOURCES
Travis-CI
https://travis-ci.org/
Travis-CI Blog
http://about.travis-ci.org/blog/
Travis-CI Source
https://github.com/travis-ci
Continuous Integration, by Martin Fowler

http://www.martinfowler.com/articles/continuousIntegration.html

Sunday, January 12, 14
RESOURCES CONTINUED
Code Coverage
https://coveralls.io/
Dependencies
https://gemnasium.com/
Version Badge
http://badge.fury.io/
Quality Analysis
https://codeclimate.com/

Sunday, January 12, 14
THAT’S A WRAP!
Joel Byler
@joelbyler

Sunday, January 12, 14
COME FLOAT WITH US!
Located on a 10,000 square foot boat on the
Cleveland waterfront, our team exemplifies
how Agile values & principles are practiced.
Come float, deliver, and learn with us, or
leverage our expertise to help you change
your company culture.

@leandog

leandog.com

GDI

Sunday, January 12, 14

Contenu connexe

Tendances

Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
cgack
 
Android development War Stories
Android development War StoriesAndroid development War Stories
Android development War Stories
Lope Emano
 

Tendances (20)

Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
Patterns and antipatterns in Docker image lifecycle as was presented at Devop...
 
Patterns and antipatterns in Docker image lifecycle as was presented at Globa...
Patterns and antipatterns in Docker image lifecycle as was presented at Globa...Patterns and antipatterns in Docker image lifecycle as was presented at Globa...
Patterns and antipatterns in Docker image lifecycle as was presented at Globa...
 
Testing containers with TestContainers @ AJUG 7/18/2017
Testing containers with TestContainers @ AJUG 7/18/2017Testing containers with TestContainers @ AJUG 7/18/2017
Testing containers with TestContainers @ AJUG 7/18/2017
 
Selenium 4 with Simon Stewart [Webinar]
Selenium 4 with Simon Stewart [Webinar]Selenium 4 with Simon Stewart [Webinar]
Selenium 4 with Simon Stewart [Webinar]
 
Building JBoss AS 7 for Fedora
Building JBoss AS 7 for FedoraBuilding JBoss AS 7 for Fedora
Building JBoss AS 7 for Fedora
 
Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015
 
JFrog container registry - DevOps extravaganza
JFrog container registry - DevOps extravaganza JFrog container registry - DevOps extravaganza
JFrog container registry - DevOps extravaganza
 
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the Cloud as presen...
 
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
 
WordPress automation and CI
WordPress automation and CIWordPress automation and CI
WordPress automation and CI
 
Building a private CI/CD pipeline with Java and Docker in the cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the cloud as presen...Building a private CI/CD pipeline with Java and Docker in the cloud as presen...
Building a private CI/CD pipeline with Java and Docker in the cloud as presen...
 
Automated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and SeleniumAutomated Testing with Cucumber, PhantomJS and Selenium
Automated Testing with Cucumber, PhantomJS and Selenium
 
Cucumber.js: Cuke up your JavaScript!
Cucumber.js: Cuke up your JavaScript!Cucumber.js: Cuke up your JavaScript!
Cucumber.js: Cuke up your JavaScript!
 
Managing Modules Without Going Crazy (NPW 2007)
Managing Modules Without Going Crazy (NPW 2007)Managing Modules Without Going Crazy (NPW 2007)
Managing Modules Without Going Crazy (NPW 2007)
 
Cypress testing
Cypress testingCypress testing
Cypress testing
 
Ruby meetup 7_years_in_testing
Ruby meetup 7_years_in_testingRuby meetup 7_years_in_testing
Ruby meetup 7_years_in_testing
 
How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?How fast can you onboard a new team member with VAGRANT ?
How fast can you onboard a new team member with VAGRANT ?
 
카카오 공용준님의 "DevOps: on going pursuit of effectiveness"
카카오 공용준님의 "DevOps: on going pursuit of effectiveness"카카오 공용준님의 "DevOps: on going pursuit of effectiveness"
카카오 공용준님의 "DevOps: on going pursuit of effectiveness"
 
Android development War Stories
Android development War StoriesAndroid development War Stories
Android development War Stories
 

Similaire à Show an Open Source Project Some Love and Start Using Travis-CI

Docker Deployments
Docker DeploymentsDocker Deployments
Docker Deployments
Docker, Inc.
 
Use Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android AppUse Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android App
Joel Byler
 
Responsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJS
Christian Heilmann
 

Similaire à Show an Open Source Project Some Love and Start Using Travis-CI (20)

Docker Deployments
Docker DeploymentsDocker Deployments
Docker Deployments
 
Use Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android AppUse Ruby to Write (and Test) Your Next Android App
Use Ruby to Write (and Test) Your Next Android App
 
Don't hate, automate. lessons learned from implementing continuous delivery
Don't hate, automate. lessons learned from implementing continuous deliveryDon't hate, automate. lessons learned from implementing continuous delivery
Don't hate, automate. lessons learned from implementing continuous delivery
 
Disassembling the Monolith: Taming Large Software Projects with Node.js
Disassembling the Monolith: Taming Large Software Projects with Node.jsDisassembling the Monolith: Taming Large Software Projects with Node.js
Disassembling the Monolith: Taming Large Software Projects with Node.js
 
Developing locally with virtual machines
Developing locally with virtual machinesDeveloping locally with virtual machines
Developing locally with virtual machines
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
 
Moving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your CodeMoving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your Code
 
Tools/Processes for serious android app development
Tools/Processes for serious android app developmentTools/Processes for serious android app development
Tools/Processes for serious android app development
 
RapidDev - Develop Titanium apps at the speed of the web!
RapidDev - Develop Titanium apps  at the speed of the web!RapidDev - Develop Titanium apps  at the speed of the web!
RapidDev - Develop Titanium apps at the speed of the web!
 
Are you ready for cloud-native Java?
Are you ready for cloud-native Java?Are you ready for cloud-native Java?
Are you ready for cloud-native Java?
 
Responsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJS
 
Moving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your CodeMoving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your Code
 
Continuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and JenkinsContinuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and Jenkins
 
How Gozengo Implemented a Continuous Deployment Culture from Day One
How Gozengo Implemented a Continuous Deployment Culture from Day OneHow Gozengo Implemented a Continuous Deployment Culture from Day One
How Gozengo Implemented a Continuous Deployment Culture from Day One
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level Overview
 
Android development war stories
Android development war storiesAndroid development war stories
Android development war stories
 
Continuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and JenkinsContinuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and Jenkins
 
JavaScript Dependencies, Modules & Browserify
JavaScript Dependencies, Modules & BrowserifyJavaScript Dependencies, Modules & Browserify
JavaScript Dependencies, Modules & Browserify
 
From naive to agile - software engineering approach
From naive to agile - software engineering approachFrom naive to agile - software engineering approach
From naive to agile - software engineering approach
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Dernier (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 

Show an Open Source Project Some Love and Start Using Travis-CI