Rails deployment    Tompa Tamás     2011.01.20
témák•   eszközök•   környezetek•   szerverek, csomagok•   deployment•   konfiguráció•   continous integration (CI)•   aut...
eszközök•   Bundler – gem függőségek•   Capistrano – deployment•   SVN - verziókövető•   Rake – build tasks•   CruiseContr...
Bundlergembundler.comGEM•   Gemfile•   bundle install•   bundle install --deployment•   bundle exec
Bundler• Pontos verzió megadás  – gem mysql2, =0.2.6• Esetleg minor verzió váltás  – gem will_paginate, ~>3.0.pre2• Fejles...
Capistranogithub.com/capistrano/capistranoGEM• capistrano-ext• capistrano_colors• capistrano_branching• Capfile• cap stagi...
CruiseControlcruisecontrolrb.thoughtworks.comRails app• cruise_config.rb• build_my_app.sh• cruise.rake• cruise start
CruiseControlbuild_my_app.sh bundle install --deployment rake cruise:startcruise_config.rb project.build_command =  ./buil...
Passengermodrails.comRails/Rack server (apache, nginx)• config.ru (Rack)• RailsEnv, RackEnv• touch tmp/restart.txt
DiNareleases.txt- Project changelog- Deployment = Releasecronbuilder- multi server cron jobs- cat ~/.cronbuilder/* | cront...
környezetek●   Development●   Test (= Cucumber)●   Cruise●   Staging●   (Customertest)●   Production
környezetekdev, test                  staging               cruisedev, test                          customerdev, test    ...
szerverek●   SSH / SCP●   Mindenhol azonos verziók●   Mindenhol azonos csomagok●   Egységes update policy●   Staging: buil...
deployment●   Capistrano    ●   Deploy strategy (Copy)    ●   Recipe●   Copy Strategy with Bundler    ●   Update copy cach...
deployment    deploy.rb●   set :stages, %w(staging production)●   require capistrano/ext/multistage●   set :application, "...
deployment    Capfile●   after deploy:setup, deploy:create_shared_dirs●   after deploy:update_code, deploy:finalize_code● ...
Capistrano tests●   Minden jól le is futott?●   Jogosultságok●   Process-ek●   Integrity check●   deploy:check hook-ok●   ...
CI●   2 CI server    ●   Instant build         ●   Automatizált tesztek (rspec, cucumber)         ●   Azonnal előjönnek a ...
CI●   Build game●   Nabaztag notifier    ●   Gyula        http://vimeo.com/17637539
Mit automatizáljunk?●   Tesztek●   Continous Integration    ●   Sikeres daily build esetén – auto staging        deploy●  ...
Mit ne automatizáljunk?●   Customertest/Production deploy    manuális!●   Interaktív deployment●   capistrano_branching to...
folyt köv• Köszönöm!• Blog: http://digitalnatives.blog.hu/
Upcoming SlideShare
Loading in...5
×

Budapest.rb 2011/01 - Rails Deployment

2,727

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • A budapest.rb (Ruby Meetup) 2011 januári előadása:
    Milyen automatizáló eszközöket használjunk? Hogyan építsük fel és kapcsoljuk össze a környezeteket? Szó lesz a CruiseControl.rb, a Capistrano, Bundler és esetleg még Gyula ingetrációjáról is. Tapasztalatok, konfiguráció, kód snippet-ek.

    http://www.meetup.com/budapest-rb/calendar/15941764/
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
2,727
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Budapest.rb 2011/01 - Rails Deployment

  1. 1. Rails deployment Tompa Tamás 2011.01.20
  2. 2. témák• eszközök• környezetek• szerverek, csomagok• deployment• konfiguráció• continous integration (CI)• automatizálás
  3. 3. eszközök• Bundler – gem függőségek• Capistrano – deployment• SVN - verziókövető• Rake – build tasks• CruiseControl.rb - integration• Passenger – mod_rails (futtató környezet)
  4. 4. Bundlergembundler.comGEM• Gemfile• bundle install• bundle install --deployment• bundle exec
  5. 5. Bundler• Pontos verzió megadás – gem mysql2, =0.2.6• Esetleg minor verzió váltás – gem will_paginate, ~>3.0.pre2• Fejlesztői gem-ek külön – group :development do
  6. 6. Capistranogithub.com/capistrano/capistranoGEM• capistrano-ext• capistrano_colors• capistrano_branching• Capfile• cap staging deploy
  7. 7. CruiseControlcruisecontrolrb.thoughtworks.comRails app• cruise_config.rb• build_my_app.sh• cruise.rake• cruise start
  8. 8. CruiseControlbuild_my_app.sh bundle install --deployment rake cruise:startcruise_config.rb project.build_command = ./build_my_app.sh
  9. 9. Passengermodrails.comRails/Rack server (apache, nginx)• config.ru (Rack)• RailsEnv, RackEnv• touch tmp/restart.txt
  10. 10. DiNareleases.txt- Project changelog- Deployment = Releasecronbuilder- multi server cron jobs- cat ~/.cronbuilder/* | crontab -
  11. 11. környezetek● Development● Test (= Cucumber)● Cruise● Staging● (Customertest)● Production
  12. 12. környezetekdev, test staging cruisedev, test customerdev, test production
  13. 13. szerverek● SSH / SCP● Mindenhol azonos verziók● Mindenhol azonos csomagok● Egységes update policy● Staging: build server is lehet, dev csomagok, esetleg debug● Production: csak ami a futtatáshoz kell
  14. 14. deployment● Capistrano ● Deploy strategy (Copy) ● Recipe● Copy Strategy with Bundler ● Update copy cache ● Excludes ● Running bundler with deploy mode ● Compressing ● Uploading https://gist.github.com/788136
  15. 15. deployment deploy.rb● set :stages, %w(staging production)● require capistrano/ext/multistage● set :application, "APP_NAME"● set :deploy_via, :copy● set :copy_cache, true● set :copy_exclude, [".svn", "*/.svn", "log"]● set :copy_via, :scp● set :rake, "bundle exec rake"
  16. 16. deployment Capfile● after deploy:setup, deploy:create_shared_dirs● after deploy:update_code, deploy:finalize_code● after deploy:finalize_code, deploy:setup_cron● after deploy:finalize_code, deploy:web:disable● after deploy:start, deploy:web:enable
  17. 17. Capistrano tests● Minden jól le is futott?● Jogosultságok● Process-ek● Integrity check● deploy:check hook-ok● Rollback esetek is!
  18. 18. CI● 2 CI server ● Instant build ● Automatizált tesztek (rspec, cucumber) ● Azonnal előjönnek a hibák ● Gyors javítási lehetőség ● Komplex, hosszan futó tesztek kihagyása ● Daily build ● Naponta csak 1x fut le ● A hosszan futó tesztek csak itt ● Metrikák – metrics_fu gem ● SVN analízis - svnstat
  19. 19. CI● Build game● Nabaztag notifier ● Gyula http://vimeo.com/17637539
  20. 20. Mit automatizáljunk?● Tesztek● Continous Integration ● Sikeres daily build esetén – auto staging deploy● Deployment● De mindig kell manuális tesztelés is!
  21. 21. Mit ne automatizáljunk?● Customertest/Production deploy manuális!● Interaktív deployment● capistrano_branching tool ● trunk → branches/stable ● branches/stable → branches/production
  22. 22. folyt köv• Köszönöm!• Blog: http://digitalnatives.blog.hu/
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×