SlideShare a Scribd company logo
привет
Tuesday, May 28, 13
Piotr Sarnacki
Tuesday, May 28, 13
@drogus
Tuesday, May 28, 13
TravisCI
Tuesday, May 28, 13
TravisCI
What’s inside?
Tuesday, May 28, 13
Poland
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
ZOMG!
THIS IS MY DREAM JOB!
Tuesday, May 28, 13
Getting back to presentation...
Tuesday, May 28, 13
A few questions first
Tuesday, May 28, 13
Tuesday, May 28, 13
Distributed CI
Tuesday, May 28, 13
Distributed CI
for Open Source!
Tuesday, May 28, 13
Distributed CI
and for private projects
Tuesday, May 28, 13
Distributed CI
and for private projects
soon!
Tuesday, May 28, 13
We’re for builds
what RubyGems
is for libraries
Tuesday, May 28, 13
A few facts
Tuesday, May 28, 13
close to 23,000 builds daily
A few facts
Tuesday, May 28, 13
close to 23,000 builds daily
A few facts
over 5MLN builds total!
Tuesday, May 28, 13
close to 23,000 builds daily
A few facts
over 5MLN builds total!
ruby, python, java, node... etc.
Tuesday, May 28, 13
What about Jenkins?
Tuesday, May 28, 13
Реальный опыт работы с Jenkins
What about Jenkins?
Tuesday, May 28, 13
What’s the purpose
of this presentation?
Tuesday, May 28, 13
Open Source distributed
application
Tuesday, May 28, 13
Open Source distributed
application
we need to scale
Tuesday, May 28, 13
Open Source distributed
application
you can watch the entire process
we need to scale
Tuesday, May 28, 13
Open Source distributed
application
you can see us fail and learn from
our mistakes
you can watch the entire process
we need to scale
Tuesday, May 28, 13
Running an app is different
than running Open Source
library
Tuesday, May 28, 13
Tuesday, May 28, 13
A bit of a history
Tuesday, May 28, 13
It all started with a mustache
Tuesday, May 28, 13
Tuesday, May 28, 13
svenfuchs/travis-ci
Tuesday, May 28, 13
Tuesday, May 28, 13
It worked
Tuesday, May 28, 13
but...
Tuesday, May 28, 13
Monolithic application
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Two concerns
Tuesday, May 28, 13
Two concerns
serving web requests
Tuesday, May 28, 13
Two concerns
serving web requests
background worker
Tuesday, May 28, 13
Problems
Tuesday, May 28, 13
Problems
growing complexity
Tuesday, May 28, 13
Problems
growing complexity
growing test suite
Tuesday, May 28, 13
Solution: Travis Worker
Tuesday, May 28, 13
Tuesday, May 28, 13
Great improvement!
Tuesday, May 28, 13
but...
Tuesday, May 28, 13
Single box, no VMs
Tuesday, May 28, 13
No clean state
Tuesday, May 28, 13
Leftovers after tests
Tuesday, May 28, 13
Solution: VirtualBox
Tuesday, May 28, 13
VirtualBox
Tuesday, May 28, 13
VirtualBox
snapshotting
Tuesday, May 28, 13
VirtualBox
snapshotting
always clean state
Tuesday, May 28, 13
VirtualBox
snapshotting
always clean state
free
Tuesday, May 28, 13
Tuesday, May 28, 13
Still only one box
Tuesday, May 28, 13
Still a lot of coupling
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Master plan
Tuesday, May 28, 13
Master plan
use AMQP for messaging
Tuesday, May 28, 13
Master plan
use AMQP for messaging
create travis-hub
Tuesday, May 28, 13
Master plan
use AMQP for messaging
create travis-hub
use jruby for the worker
Tuesday, May 28, 13
Why AMQP?
Tuesday, May 28, 13
Unify messaging
Tuesday, May 28, 13
Log output
Tuesday, May 28, 13
Tuesday, May 28, 13
When rails app fails,
builds still run
Tuesday, May 28, 13
So many changes
Tuesday, May 28, 13
All at once?
Tuesday, May 28, 13
Not that smart move
Tuesday, May 28, 13
3 months of
development
Tuesday, May 28, 13
A lot of firefighting
Tuesday, May 28, 13
Lesson learned
Tuesday, May 28, 13
Lesson learned
smaller incremental
changes are better
Tuesday, May 28, 13
Overally,
great improvement again
Tuesday, May 28, 13
but...
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Meet travis-listener
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Better reliability
Tuesday, May 28, 13
Rare changes
last deploy: 2012-12-05.11-27
Tuesday, May 28, 13
Small chance of loosing
an event
Tuesday, May 28, 13
It’s great!
Tuesday, May 28, 13
but...
Tuesday, May 28, 13
Travis Hub does a lot
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
A great improvement again!
Tuesday, May 28, 13
but...
Tuesday, May 28, 13
API is coupled with client
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
API does not change that often
Tuesday, May 28, 13
Easier deploys
Tuesday, May 28, 13
Separate domains?
Tuesday, May 28, 13
CORS to the rescue
Tuesday, May 28, 13
CORS
Tuesday, May 28, 13
CORS
Cross Origin Resource Sharing
Tuesday, May 28, 13
CORS
Cross Origin Resource Sharing
allows remote ajax requests
Tuesday, May 28, 13
CORS
Cross Origin Resource Sharing
allows remote ajax requests
client and API isolation
Tuesday, May 28, 13
Service Oriented Architectures
Tuesday, May 28, 13
SOA - benefits
Tuesday, May 28, 13
SOA - benefits
reliability
Tuesday, May 28, 13
SOA - benefits
reliability
scalability
Tuesday, May 28, 13
SOA - benefits
reliability
scalability
maintainability
Tuesday, May 28, 13
SOA - drawbacks
Tuesday, May 28, 13
SOA - drawbacks
more apps to change
Tuesday, May 28, 13
SOA - drawbacks
more apps to change
more overhead
Tuesday, May 28, 13
SOA - drawbacks
more apps to change
more overhead
distributed computing is hard
Tuesday, May 28, 13
From monolithic app to SOA!
Tuesday, May 28, 13
We’re awesome, aren’t we?
Tuesday, May 28, 13
we can always do better
Tuesday, May 28, 13
Can you spot the problem?
Tuesday, May 28, 13
Tuesday, May 28, 13
Still a lot of sharing
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Tuesday, May 28, 13
Future direction:
remove more coupling
Tuesday, May 28, 13
Well defined public APIs
Tuesday, May 28, 13
Our code sharing
is not optimal
Tuesday, May 28, 13
travis-core
Tuesday, May 28, 13
Tuesday, May 28, 13
Split travis-core
Tuesday, May 28, 13
A few tips
Tuesday, May 28, 13
Small changes
Tuesday, May 28, 13
Metrics
Tuesday, May 28, 13
Tuesday, May 28, 13
Don’t break public APIs
Tuesday, May 28, 13
If you need,
deprecate first
Tuesday, May 28, 13
Always deployable master
Tuesday, May 28, 13
Feature flips
Tuesday, May 28, 13
if Travis::Features.active? :foo
do_foo()
end
Tuesday, May 28, 13
Bulletproof DB changes
Tuesday, May 28, 13
if column_names.include? :branch
where(branch: 'master')
else
joins(:commit).
where(commit: { branch: 'master' })
end
Tuesday, May 28, 13
Google for:
Fallacies of distributed
computing
Tuesday, May 28, 13
Thank you
Tuesday, May 28, 13
Questions?
Tuesday, May 28, 13

More Related Content

PDF
Practical SOLID with Rails - Andrii Savchenko
PDF
Intro to Yahoo Tech
PDF
Ul payment conference
PDF
PPTX
Travis CI - PHP
PDF
Travis-CI - Continuos integration in the cloud for PHP
PPTX
Azphp phpunit-jenkins
KEY
Continuous Integration In A PHP World
Practical SOLID with Rails - Andrii Savchenko
Intro to Yahoo Tech
Ul payment conference
Travis CI - PHP
Travis-CI - Continuos integration in the cloud for PHP
Azphp phpunit-jenkins
Continuous Integration In A PHP World

Similar to Travis CI – what's inside? (16)

PDF
Easy Mobile
PDF
The Future is Responsive
PDF
Midem Visionary Monday: The Age of Context
PDF
UX, UI, WTF
PDF
Adapting to the Unknown
PDF
PostgreSQL Hooks for Fun and Profit
PDF
Future technologies for business simulations
PDF
Responsive Web Design - An Accessibility Tool
PDF
How to build an ecosystem for developers by David Bonilla
PDF
Storyplayer
PDF
Conexao Java: Criando uma App Android
PDF
WHY YOU SHOULD NEVER ASK, "HOW IS THIS BETTER THAN HADOOP?"
PDF
Apachecon cassandra transport
PDF
The New API at SXSW 2013
PDF
Holistic slides lightning_testing_bof
PDF
DevOps Jungle of Tools, Ran Tavory
Easy Mobile
The Future is Responsive
Midem Visionary Monday: The Age of Context
UX, UI, WTF
Adapting to the Unknown
PostgreSQL Hooks for Fun and Profit
Future technologies for business simulations
Responsive Web Design - An Accessibility Tool
How to build an ecosystem for developers by David Bonilla
Storyplayer
Conexao Java: Criando uma App Android
WHY YOU SHOULD NEVER ASK, "HOW IS THIS BETTER THAN HADOOP?"
Apachecon cassandra transport
The New API at SXSW 2013
Holistic slides lightning_testing_bof
DevOps Jungle of Tools, Ran Tavory
Ad

More from Olga Lavrentieva (20)

PPTX
15 10-22 altoros-fact_sheet_st_v4
PPTX
Сергей Ковалёв (Altoros): Practical Steps to Improve Apache Hive Performance
PPTX
Андрей Козлов (Altoros): Оптимизация производительности Cassandra
PDF
Владимир Иванов (Oracle): Java: прошлое и будущее
PPTX
Brug - Web push notification
PDF
Александр Ломов: "Reactjs + Haskell + Cloud Foundry = Love"
PPTX
Максим Жилинский: "Контейнеры: под капотом"
PPTX
Александр Протасеня: "PayPal. Различные способы интеграции"
PPTX
Сергей Черничков: "Интеграция платежных систем в .Net приложения"
PPTX
Антон Шемерей «Single responsibility principle в руби или почему instanceclas...
PDF
Егор Воробьёв: «Ruby internals»
PDF
Андрей Колешко «Что не так с Rails»
PDF
Дмитрий Савицкий «Ruby Anti Magic Shield»
PPTX
Сергей Алексеев «Парное программирование. Удаленно»
PPTX
«Почему Spark отнюдь не так хорош»
PPTX
«Cassandra data modeling – моделирование данных для NoSQL СУБД Cassandra»
PPTX
«Практика построения высокодоступного решения на базе Cloud Foundry Paas»
PPTX
«Дизайн продвинутых нереляционных схем для Big Data»
PPTX
«Обзор возможностей Open cv»
PPTX
«Нужно больше шин! Eventbus based framework vertx.io»
15 10-22 altoros-fact_sheet_st_v4
Сергей Ковалёв (Altoros): Practical Steps to Improve Apache Hive Performance
Андрей Козлов (Altoros): Оптимизация производительности Cassandra
Владимир Иванов (Oracle): Java: прошлое и будущее
Brug - Web push notification
Александр Ломов: "Reactjs + Haskell + Cloud Foundry = Love"
Максим Жилинский: "Контейнеры: под капотом"
Александр Протасеня: "PayPal. Различные способы интеграции"
Сергей Черничков: "Интеграция платежных систем в .Net приложения"
Антон Шемерей «Single responsibility principle в руби или почему instanceclas...
Егор Воробьёв: «Ruby internals»
Андрей Колешко «Что не так с Rails»
Дмитрий Савицкий «Ruby Anti Magic Shield»
Сергей Алексеев «Парное программирование. Удаленно»
«Почему Spark отнюдь не так хорош»
«Cassandra data modeling – моделирование данных для NoSQL СУБД Cassandra»
«Практика построения высокодоступного решения на базе Cloud Foundry Paas»
«Дизайн продвинутых нереляционных схем для Big Data»
«Обзор возможностей Open cv»
«Нужно больше шин! Eventbus based framework vertx.io»
Ad

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Approach and Philosophy of On baking technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
A Presentation on Artificial Intelligence
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Modernizing your data center with Dell and AMD
cuic standard and advanced reporting.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
“AI and Expert System Decision Support & Business Intelligence Systems”
20250228 LYD VKU AI Blended-Learning.pptx
Spectral efficient network and resource selection model in 5G networks
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
NewMind AI Monthly Chronicles - July 2025
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Approach and Philosophy of On baking technology
Per capita expenditure prediction using model stacking based on satellite ima...
Mobile App Security Testing_ A Comprehensive Guide.pdf
The AUB Centre for AI in Media Proposal.docx
Dropbox Q2 2025 Financial Results & Investor Presentation
Diabetes mellitus diagnosis method based random forest with bat algorithm
A Presentation on Artificial Intelligence
Digital-Transformation-Roadmap-for-Companies.pptx
Big Data Technologies - Introduction.pptx
Modernizing your data center with Dell and AMD

Travis CI – what's inside?