Capistrano + rsync ã§çã¨ããããã¤
ããã«ã¡ã¯ã
ã¿ã¤ãã«ã®éããªãã§ãããCapistrano ã¿ããªã¤ãã£ã¦ãããã¼ã
ã£ã¦ãã¨ã§ç¬èªã®ãããã¤ã·ã¹ãã ããã£ã¦ãªãã¦ãããã«FTPã§UPã¯ãã¦ã¾ããã£ã¦äººã¯çµæ§ä½¿ã£ã¦ãããã ã¨æã£ã¦ããã§ããã©ãCapistrano ã£ã¦ãªããããã©ã«ãåãµã¼ã㧠vcs ã® update çãªãã¨ããããããã¼ã«ã«ã«ã½ã¼ã¹ããªã¼ãç¨æãã¦ããå ´åã«ä½¿ããã®ã¯ scp ã§ããªããã¨ã³ãããªãããã¨è¨ã話ã§ããã¡ãã¡ã½ã¼ã¹ããªã¼å
¨é¨é
å¸ããã¦ãã転ééãæéãããã£ã¦ãããããªãã®ã§ãã¾ã¼rsyncããããã ãããã¨ãããã¨ã§ããããªæ㯠capistrano_rsync_with_remote_cache (ãªããã) ã使ãã°ããããï¼ã£ã¦ã話ã§ãã *1
ãã®ãæä¸ãªãã§ãçã¨ãããããã§ãã
ã¤ã³ã¹ãã¼ã«
gem ã§é©å½ã«ã¤ã³ã¹ãã¼ã«ã
$ gem install capistrano_rsync_with_remote_cache
ä»ã ã¨2.4.0ã£ã¦ãã¤ãå
¥ãã¾ããã
使ãæ¹
deploy_via ãéè¦ãªããã ãã©ããã®ä»ãããããæãã¦ãããå¤åãã®ãã¼ã«ã®ãããã¨ããã¯ãscm çãªã¨ããã¯æ¢åã®ãªãã¸ããªã®æ ã§ããã local cache ã¨ãã¦ä¿æãã¦ãdeploy_via ã§ãdeploy ã® strategy ã ãã¡ããã¨åãæ¿ããããã¨ããã®ãããªæ°ããã¦ããã
set :scm, :git set :deploy_via, :rsync_with_remote_cache set :git_enable_submodules, true set :repository, "." set :copy_exclude, %w( .git Capfile config/hogeohge.ini cache app/logs ) set :rsync_options, '-az --delete --delete-excluded --exclude=.git --exclude=' + copy_exclude.join(' --exclude=')
ãã¼ãªããããã§ããã :copy_exclude ã£ã¦ã§ããã©ã«ãã® Capistrano ã®ãªãã·ã§ã³ãæå®ãã¤ã¤ããã :rsync_options ã«æå®ãã¡ããã¨ããããªãµã¬ãªãããã§ããããï¼ï¼ããã®ä¸èº«ã¯é©å½ã«ãï¼
ã§ãªãããããªãã¨ã«ãã¦ããã¨ããããªã« rsync ã§remoteã«ãããã£ã¬ã¯ããªã«å·®åã§ã¢ãããã¼ããã¦ãããããrelease_pathã«ã³ãã¼ãã¦ä½¿ã£ã¦ãããæãã«ãªãã¾ãã
ã¡ãªã¿ã« deploy strategy ã«ã¯ããã©ã«ã㧠:remote_cache ã£ã¦ããä¼¼ã¦ãã£ã½ããã¤ããããã§ããããã¯ããã§å
¨ç¶éããã¤ã§ã deploy -> remote ã®è»¢éã¯æ®éã« scm ãªãã¤ã§ãremoteã«ãªãã¸ããªã®ã³ãã¼ã1ã¤ãã£ã¦ããã¦ãããããrelease_pathã«ã³ãã¼ãã¦ä½¿ããã§ããã£ã¦ãããã¤ã§ãã
ä»çµã¿
è¶ é©å½ã§ãããããªãããã®ä»çµã¿ã§åãã¦ã¾ããã¾ããã¾ãæ°åã®å ¥ã£ãå³ã§ã¯ãªããã§ããé©å½ã«æãåã£ã¦ãã ããã
ç°¡åã«è¨ãã¨ãrepository "." ãªã®ã§ããã®ãã£ã¬ã¯ããªããã§ã« git ãªãã¸ããªã«ãã¦ããããã§ããï¼ããããã¯deployãµã¼ãã¨ãä½ã£ããããã¨æ®éã§ãããï¼ï¼ãdeployæã«ã¯ããããä¸åº¦ .rsync_cache ãã£ã¬ã¯ããªã« clone ï¼æ¬¡å以éã¯pullï¼ããã¾ããã§ããããã¤å
ã«ã¯ shared ãã£ã¬ã¯ããªã« cached-copy ã¨ãããã£ã¬ã¯ããªãã§ãã¦ãlocal ã® .rsync_cache ãã remote ã® cached-copy ã« rsync ã§å·®åã¢ãããã¼ãããã¾ããã§ã cached-copy ãã release_path ã«æ¥ä»ã§ãã£ã¬ã¯ã㪠cp ããã¦(ããå®éã¯ããã rsync ã§ã)ãæå¾ã« symlink ã®è²¼æ¿ããè¡ããããã¨ããæµãã§ãã
çµè«
ã¨ãããã¨ã§ç¡äºã«çã¨ããããã¤ãã§ããããã«ãªãã¾ããã
ããã¦æçµçã«ã¯ Ruby ãªã®ã§ãä½ããã£ã¦OKã ãããã¨ããã¨ããã Ruby ç³»ãã¼ã«ã®è¯ãã¨ãããªã®ãã©ãããã¨ããã®ã¯å¥ã«ãã¦ã *2
*1:Gitã¨ãã 㨠pull ã¨ãå§ç¸®ãã¦ãã£ã¦ãããããã¾ã§ã³ã¹ããé«ããªãã®ããªï¼
*2:ããã¦ãªãã¨ããããRubyç³»ãã¼ã«ã¯ã»ãã¨DSLã ãããRubyãããã£ã¦ãã°ããã使ããã¨ããããã¯å²ã¨ãã®ãã¼ã«ç¹æã®ææ³ãå¦ã°ãªãããããªãæãé¢åãªã¨ããã§ã¯ããã¨ããã°ããã®ã ãã©ãã§ãã¾ãããã¯ãã£ã¦ãçµå±æçµçã«ã¯Rubyãªã®ã