capistrano 3 쓰기

2356 단어 Capistrano
Ruby on Rails4에서 실행중인 사이트의 여러 대의 웹 서버에 최신 소스를 적용하고 업데이트가 있으면 재부팅하고 싶어졌으므로 capistrano의 코드를 썼습니다.

/config/deploy.rb
namespace :apache do
  task :deploy do
    on roles(:web) do
      within "git管理下のディレクトリ" do
        puts '> git pull'
        out = capture(:git, "pull")
        puts out
        if out != 'Already up-to-date.' 
          puts '> sudo service apache2 restart'
          puts capture(:sudo, "service apache2 restart")
        end
      end
    end
  end
end

웹 서버의 정의는, 환경 마다 (staging.rb,production.rb 등)에 다른 파일로 정의하고 있습니다.

/config/deploy/staging.rb
 :
role :web, %w{hoge.com fuga.com}
 :

이것을 Jenkins에 등록하고 Jenkins에서 실행하여 작업 실행자의 기록을 남깁니다.

원래 capistrano의 태스크의 기술 언어를 모르고 고민했지만, 어떻게든 움직였습니다.
cd 할 수 없을 수 없다

좋은 웹페이지 즐겨찾기