CARVIEW |
Select Language
HTTP/2 301
server: envoy
x-frame-options: SAMEORIGIN
cache-control: public, s-maxage=86400, max-age=0, must-revalidate
location: https://www.slideshare.net/slideshow/graduating-to-jenkins-ci-for-rubyonrails-teams/12973197
x-envoy-upstream-service-time: 274
p3p: CP="OTI DSP COR CUR ADM DEV PSD IVD CONo OUR IND"
x-content-type-options: nosniff
accept-ranges: bytes
age: 0
date: Sat, 11 Oct 2025 05:06:16 GMT
via: 1.1 varnish
x-served-by: cache-bom-vanm7210049-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1760159175.442664,VS0,VE777
vary: accept-encoding, x-bot
set-cookie: browser_id=86e22315-0ada-454c-8bfc-1138da087b20; Domain=.slideshare.net; Path=/; Expires=Thu, 10 Oct 2030 05:06:16 GMT
strict-transport-security: max-age=63072000; includeSubDomains; preload
alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400
content-length: 92
HTTP/2 200
content-type: text/html; charset=utf-8
server: envoy
x-frame-options: SAMEORIGIN
cache-control: public, s-maxage=86400, max-age=0, must-revalidate
x-powered-by: Next.js
etag: "teb8p6u6hxo01y"
content-encoding: gzip
x-envoy-upstream-service-time: 667
p3p: CP="OTI DSP COR CUR ADM DEV PSD IVD CONo OUR IND"
x-content-type-options: nosniff
accept-ranges: bytes
age: 0
date: Sat, 11 Oct 2025 05:06:17 GMT
via: 1.1 varnish
x-served-by: cache-bom-vanm7210049-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1760159176.232787,VS0,VE1148
vary: accept-encoding, x-bot
strict-transport-security: max-age=63072000; includeSubDomains; preload
alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400
content-length: 138714
Graduating to Jenkins CI for Ruby(-on-Rails) Teams | PDF 





![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Running Jenkins for $19
“Joe” on Linode’s Smallest Plan
useradd -m jenkins -p [password] -s /bin/bash
addgroup jenkins sudo
wget -q -O - https://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add –
sudo sh -c 'echo deb https://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo aptitude update sudo aptitude install jenkins
change port in /etc/default/jenkins
Manage Jenkins, Configure System, change Jenkins URL
service jenkins restart
Manage Jenkins, Configure System
https://joe.example.com:9000/
– Enable Security
– Jenkins Own Database
– Add A User (eg. Joe)
– Matrix-Based Security
– Give Joe Permission to do Everything
– Configure Git Plugin w/ Global Username & Email
– Configure SMTP E-Mail Notification
– Configure Github Web Hook
https://joe:[password]@joe.example.com:9000/github-webhook](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-6-2048.jpg)



![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Jenkins Jobs: Dev Build
Headless Test w/ XVFB
https://artsy.github.com/blog/2012/05/15/how-to-organize-over-3000-rspec-specs-and-retry-test-failures/
rake test:ci
namespace :test do
task :specs, [ :display ] => :environment do |t, args|
ENV['DISPLAY'] = args[:display] if args[:display]
Rake::Task['spec:suite:all'].invoke
end
task :jasmine, [ :display ] => :environment do |t, args|
ENV['DISPLAY'] = args[:display] if args[:display]
system!("bundle exec rake jasmine:ci")
end
task :all, [ :display ] => :environment do |t, args|
Rake::Task['assets'].invoke
Rake::Task['test:jasmine'].invoke(args[:display])
Rake::Task['test:specs'].invoke(args[:display])
end
task :ci do
Rake::Task['test:all'].invoke(":99")
end
end](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-10-2048.jpg)
![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Jenkins Job: Deploy
Deploy to Staging
Deploy to Production
rake deploy:production
rake deploy:staging
def system!(cmdline)
logger.info("[#{Time.now}] #{cmdline}")
rc = system(cmdline)
"failed with exit code #{$?.exitstatus}" if (rc.nil? || ! rc || $?.exitstatus != 0)
end
namespace :deploy do
task :staging => :environment do
system!("bundle exec heroku maintenance:on --app=app-staging")
system!("git push git@heroku.com:app-staging.git origin/staging:master")
system!("bundle exec heroku maintenance:off --app=app-staging")
end
task :production => :environment do
system!("git push git@heroku.com:app-production.git origin/production:master")
end
end](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-11-2048.jpg)
![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Jenkins Job: Cron
Daily Cron
Weekly Cron
namespace :cron do
task :daily => :environment do
Rake::Task['db:production:backup'].invoke
system!("heroku rake db:delayed_tasks:daily:run --app=app-production")
end
task :weekly => :environment do
Rake::Task['db:production:archive'].invoke
end
end](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-12-2048.jpg)






Uploaded byDaniel Doubrovkine
6,205 views
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
The document summarizes a presentation given at the 2011 Jenkins User Conference in New York City about using Jenkins for continuous integration for Ruby on Rails projects. It discusses setting up Jenkins on low-cost virtual servers, configuring jobs for development builds, deployments, and cron jobs, and using plugins to integrate with version control systems and automate tasks. It also promotes the Jenkins client Ruby gem for programmatically controlling Jenkins.
Related topics:
Downloaded 50 times





![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Running Jenkins for $19
“Joe” on Linode’s Smallest Plan
useradd -m jenkins -p [password] -s /bin/bash
addgroup jenkins sudo
wget -q -O - https://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add –
sudo sh -c 'echo deb https://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo aptitude update sudo aptitude install jenkins
change port in /etc/default/jenkins
Manage Jenkins, Configure System, change Jenkins URL
service jenkins restart
Manage Jenkins, Configure System
https://joe.example.com:9000/
– Enable Security
– Jenkins Own Database
– Add A User (eg. Joe)
– Matrix-Based Security
– Give Joe Permission to do Everything
– Configure Git Plugin w/ Global Username & Email
– Configure SMTP E-Mail Notification
– Configure Github Web Hook
https://joe:[password]@joe.example.com:9000/github-webhook](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-6-2048.jpg)



![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Jenkins Jobs: Dev Build
Headless Test w/ XVFB
https://artsy.github.com/blog/2012/05/15/how-to-organize-over-3000-rspec-specs-and-retry-test-failures/
rake test:ci
namespace :test do
task :specs, [ :display ] => :environment do |t, args|
ENV['DISPLAY'] = args[:display] if args[:display]
Rake::Task['spec:suite:all'].invoke
end
task :jasmine, [ :display ] => :environment do |t, args|
ENV['DISPLAY'] = args[:display] if args[:display]
system!("bundle exec rake jasmine:ci")
end
task :all, [ :display ] => :environment do |t, args|
Rake::Task['assets'].invoke
Rake::Task['test:jasmine'].invoke(args[:display])
Rake::Task['test:specs'].invoke(args[:display])
end
task :ci do
Rake::Task['test:all'].invoke(":99")
end
end](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-10-2048.jpg)
![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Jenkins Job: Deploy
Deploy to Staging
Deploy to Production
rake deploy:production
rake deploy:staging
def system!(cmdline)
logger.info("[#{Time.now}] #{cmdline}")
rc = system(cmdline)
"failed with exit code #{$?.exitstatus}" if (rc.nil? || ! rc || $?.exitstatus != 0)
end
namespace :deploy do
task :staging => :environment do
system!("bundle exec heroku maintenance:on --app=app-staging")
system!("git push git@heroku.com:app-staging.git origin/staging:master")
system!("bundle exec heroku maintenance:off --app=app-staging")
end
task :production => :environment do
system!("git push git@heroku.com:app-production.git origin/production:master")
end
end](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-11-2048.jpg)
![Jenkins User Conference New York, May 17 2011 #jenkinsconf
Jenkins Job: Cron
Daily Cron
Weekly Cron
namespace :cron do
task :daily => :environment do
Rake::Task['db:production:backup'].invoke
system!("heroku rake db:delayed_tasks:daily:run --app=app-production")
end
task :weekly => :environment do
Rake::Task['db:production:archive'].invoke
end
end](https://image.slidesharecdn.com/2012-05-17jucny-graduatingtojenkinsciforruby-on-railsteams-120517125634-phpapp01/75/Graduating-to-Jenkins-CI-for-Ruby-on-Rails-Teams-12-2048.jpg)





More Related Content
What's hot
Similar to Graduating to Jenkins CI for Ruby(-on-Rails) Teams
More from Daniel Doubrovkine
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
- 1. Jenkins User Conference New York, May 17 2011 #jenkinsconf Graduating To Jenkins CI For Ruby(-on-Rails) Teams Daniel Doubrovkine @dblockdotorg @artsy
- 2. Jenkins User Conference New York, May 17 2011 #jenkinsconf Microsoft BuildTracker Distributed Build System Company-Wide SaS Lab w/ 400 Machines* * zomg!
- 3. Jenkins User Conference New York, May 17 2011 #jenkinsconf Enterprise Software Windows Scheduler* CruiseControl Java CruiseControl.NET * zomg?
- 4. Jenkins User Conference New York, May 17 2011 #jenkinsconf RoR Shop CIJoe Written in Ruby* Tiny Footprint One Project * yay?
- 5. Jenkins User Conference New York, May 17 2011 #jenkinsconf Why NOT Jenkins? Not Written in Ruby We’re Too Small Written in Java Java is Big & Slow Too Much Maintenance I Just Need One Build No ANSI Color Support We actually didn’t try it …
- 6. Jenkins User Conference New York, May 17 2011 #jenkinsconf Running Jenkins for $19 “Joe” on Linode’s Smallest Plan useradd -m jenkins -p [password] -s /bin/bash addgroup jenkins sudo wget -q -O - https://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add – sudo sh -c 'echo deb https://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list' sudo aptitude update sudo aptitude install jenkins change port in /etc/default/jenkins Manage Jenkins, Configure System, change Jenkins URL service jenkins restart Manage Jenkins, Configure System https://joe.example.com:9000/ – Enable Security – Jenkins Own Database – Add A User (eg. Joe) – Matrix-Based Security – Give Joe Permission to do Everything – Configure Git Plugin w/ Global Username & Email – Configure SMTP E-Mail Notification – Configure Github Web Hook https://joe:[password]@joe.example.com:9000/github-webhook
- 7. Jenkins User Conference New York, May 17 2011 #jenkinsconf Plugins Git https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin GithubAPI https://wiki.jenkins-ci.org/display/JENKINS/GitHub+API+Plugin AnsiColor https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin thinBackup https://wiki.jenkins-ci.org/display/JENKINS/thinBackup ChuckNorris https://wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin
- 8. Jenkins User Conference New York, May 17 2011 #jenkinsconf Ruby/Rails Build Environment SSH Key Git RVM Github SSH Access Heroku SSH Access
- 9. Jenkins User Conference New York, May 17 2011 #jenkinsconf A Project New Job – FreeStyle Project – Configure Github Project – Configure Git Repository Build Script #!/bin/bash source ~/.bash_profile rvm use 1.9.2 gem install bundler bundle install bundle exec rake
- 10. Jenkins User Conference New York, May 17 2011 #jenkinsconf Jenkins Jobs: Dev Build Headless Test w/ XVFB https://artsy.github.com/blog/2012/05/15/how-to-organize-over-3000-rspec-specs-and-retry-test-failures/ rake test:ci namespace :test do task :specs, [ :display ] => :environment do |t, args| ENV['DISPLAY'] = args[:display] if args[:display] Rake::Task['spec:suite:all'].invoke end task :jasmine, [ :display ] => :environment do |t, args| ENV['DISPLAY'] = args[:display] if args[:display] system!("bundle exec rake jasmine:ci") end task :all, [ :display ] => :environment do |t, args| Rake::Task['assets'].invoke Rake::Task['test:jasmine'].invoke(args[:display]) Rake::Task['test:specs'].invoke(args[:display]) end task :ci do Rake::Task['test:all'].invoke(":99") end end
- 11. Jenkins User Conference New York, May 17 2011 #jenkinsconf Jenkins Job: Deploy Deploy to Staging Deploy to Production rake deploy:production rake deploy:staging def system!(cmdline) logger.info("[#{Time.now}] #{cmdline}") rc = system(cmdline) "failed with exit code #{$?.exitstatus}" if (rc.nil? || ! rc || $?.exitstatus != 0) end namespace :deploy do task :staging => :environment do system!("bundle exec heroku maintenance:on --app=app-staging") system!("git push git@heroku.com:app-staging.git origin/staging:master") system!("bundle exec heroku maintenance:off --app=app-staging") end task :production => :environment do system!("git push git@heroku.com:app-production.git origin/production:master") end end
- 12. Jenkins User Conference New York, May 17 2011 #jenkinsconf Jenkins Job: Cron Daily Cron Weekly Cron namespace :cron do task :daily => :environment do Rake::Task['db:production:backup'].invoke system!("heroku rake db:delayed_tasks:daily:run --app=app-production") end task :weekly => :environment do Rake::Task['db:production:archive'].invoke end end
- 13. Jenkins User Conference New York, May 17 2011 #jenkinsconf
- 14. Jenkins User Conference New York, May 17 2011 #jenkinsconf Jenkins AnsiColor Plugin https://github.com/john-griffin/jenkins-client Eliminate Boring Output
- 15. Jenkins User Conference New York, May 17 2011 #jenkinsconf Jenkins-Client Ruby Gem https://github.com/john-griffin/jenkins-client Start a Job List Builds Contribute!
- 16. Jenkins User Conference New York, May 17 2011 #jenkinsconf Chuck Norris Says art.sy: https://art.sy twitter: @dblockdotorg blog: https://code.dblock.org email: dblock@dblock.org slides on slideshare: https://slideshare.net/dblockdotorg
- 17. Jenkins User Conference New York, May 17 2011 #jenkinsconf Thank You To Our Sponsors Platinum Sponsor Gold Sponsors Silver Sponsors Bronze Sponsors