git cloneは git init、リモートリポジトリの各種設定(※)、git pullを一気に実行
set :application, 'finalge_sample_app'
set :repo_url, 'git@github.com:mumoshu/finagle_sample_app.git'
task :update do
run_locally do
application = fetch :application
if test "[ -d #{application} ]"
execute "cd #{application}; git pull"
end
else
execute "git clone #{fetch :repo_url} #{application}"
end
end
end
task :archive => :update do
run_locally do
sbt_output = capture "cd #{fetch :application}; sbt pack-archive"
sbt_output_without_escape_sequences = sbt_output.lines.map { |line| line.gsub(/\e\[\d{1,2}m/, '')}.join
archive_relative_path = sbt_output_without_escape_sequences.match(/\[info\] Generating (?<archive_path>.+\.tar\.gz)\s*$/)[:archive_path]
archive_name = archive_relative_path.match(/(?<archive_name>[^\/]+\.tar\.gz)$/)[:archive_name]
archive_absolute_path = File.join(capture("cd #{fetch(:application)}; pwd").chomp, archive_relative_path)
info archive_absolute_path
info archive_name
set :archive_absolute_path, archive_absolute_path
set :archive_name, archive_name
end
end
task :deploy => :archive do
archive_path = fetch :archive_absolute_path
archive_name = fetch :archive_name
release_path = File.join(fetch(:deploy_to), fetch(:application))
on roles(:web) do
unless test "[ -d #{release_path} ]"
execute "mkdir -p #{release_path}"
end
upload! archive_path, release_path
execute "cd #{release_path}; tar -zxvf #{archive_name}"
ここでアプリケーションの起動
end
end
尋常じゃねー 差がありすぎて、追い付ける気が全くしねー
だいたいscalaなんて、全然やりこんでねーぞ。。。
capistranoの理解は若干進んだが、後退している気しかしねー