deployment mit capistrano und subversion - rails jobsb-simple.de/download/capistrano.pdf ·...
TRANSCRIPT
Capistrano
© 2006, Wirdemann, Baustert
1
Ralf Wirdemannwww.b-simple.de
Deployment mit Capistrano und Subversion
1
Capistrano
© 2006, Wirdemann, Baustert
2
• Softwareentwicklung • Projektmanagement• Coaching• Beratung• Schulungen• Java/Java EE• Ruby on Rails
www.rapidwebdevelopment.de
2
Capistrano
© 2006, Wirdemann, Baustert
Überblick: Deployment mit Capistrano• Automatisierung• Deployment• Capistrano als Deployment Tool für Rails• Live-Demo• Capistrano erweitern
3
3
Capistrano
© 2006, Wirdemann, Baustert
4
Automatisierung
• Beispiele: Scheduled Builds, Deployment, Monitoring• Werkzeuge: rake, ant, make, Shell-Skripte, cron,
CruiseControl• eine der wichtigsten „Best Practices“• Warum: spart Zeit und vermeidet Fehler• Wann?• Pragmatic Programmer, Pragmatic Project Automation
Mike Clark: „Der Computer führt eine Reihe von Tasks konsistent und wiederholbar aus.“
4
Capistrano
© 2006, Wirdemann, Baustert
Deployment
• besteht aus einer Vielzahl an Schritten• zeitintensiv• fehleranfällig• langweilig• muss häufig ausgeführt werden
5
Auslieferung und Installation einer neuen Software-Version für deren Endbenutzer.
5
Capistrano
© 2006, Wirdemann, Baustert
Capistrano• Tool und Framework für das automatisierte Deployment
von Web Anwendungen• Commanded Automation• Automatisierte, parallele Ausführung von Tasks auf
mehreren Servern• Jamis Buck (37signals)• Warum ist Capistrano toll?
– vergessen, wenn konfiguriert– mehr Zeit für wichtige Probleme– keine Fehler, nichts wird vergessen– Deployment ist keine eigenständige Disziplin mehr
6
6
Capistrano
© 2006, Wirdemann, Baustert
Deploymentumgebung
7
Server n Entwicklung
SVN-Repository
- Ruby, Rails- Rake- SVN-Client- SSH-Server- LightTPD- FastCGI- ruby-fcgi- MySQL
SSH
svnsvn
Server 1
...
- Ruby, Rails- Rake- SVN-Client- SSH-Client
7
Capistrano
© 2006, Wirdemann, Baustert
Installation• sudo gem install capistrano --include-dependencies• cap --apply-to . thelist
8
config/deploy.rb
8
Capistrano
© 2006, Wirdemann, Baustert
Deploymentrezept
9
thelist/config/deploy.rb
9
Capistrano
© 2006, Wirdemann, Baustert
1. Schritt: Setup
10
releases
thelist
shared
log
pids
cap setup
10
Capistrano
© 2006, Wirdemann, Baustert
2. Schritt: Source auschecken
11
releases
thelist
shared
log
pids
20061001103303
cap update_code
11
Capistrano
© 2006, Wirdemann, Baustert
3. Schritt: Link setzen
12
cap symlink
releases
thelist
shared
log
...
20061001103303
current
12
Capistrano
© 2006, Wirdemann, Baustert
Lighttpd und FCGI-Prozesse starten
13
13
Capistrano
© 2006, Wirdemann, Baustert
Nachfolgende Deployments
14
1. Auschecken
2. Link aktualisieren
releases
thelist20061001103303
current
20061001103803
3. FCGI Neustart
cap deploy
14
Capistrano
© 2006, Wirdemann, Baustert
Einen Schritt zurück• rake remote:rollback
15
2. Neustes Verzeichnis löschen
1. Link auf Vorgängerverzeichnis
3. FCGI Neustart
releases
thelist20061001103303
current
20061001103803
cap rollback
15
Capistrano
© 2006, Wirdemann, Baustert
Tasks
16
cap show_tasks
16
Capistrano
© 2006, Wirdemann, Baustert
Eigene Tasks
17
cap which_ruby
17
Capistrano
© 2006, Wirdemann, Baustert
Tasks und Variablen
18
cap show_revision
18
Capistrano
© 2006, Wirdemann, Baustert
Taskketten
19
cap show_status
19
Capistrano
© 2006, Wirdemann, Baustert
Transaktionen und Rollbacks
20
cap my_deploy
20
Capistrano
© 2006, Wirdemann, Baustert
Hooks: Before- und After-Tasks
21
cap update_code
21
Capistrano
© 2006, Wirdemann, Baustert
Fazit• Pragmatisch Automatisieren• Capistrano auch bei nur einem Server• Egal was kommt:
=> Es bleibt immer nur ein Kommando
22
22
Capistrano
© 2006, Wirdemann, Baustert
23
Quellen• http://manuals.rubyonrails.com/read/book/17• Dave Thomas, Andy Hunt:
Pragmatic Programmer• Mike Clark: Project Automation• Rapid Web Development, 2. Auflage
23