30. deploy.rb (2)
# 將要共享的檔案或目錄分別添加到 :linked_files 跟 :linked_dirs 變數中
# 多個檔案或目錄可以用逗號 (,) 區隔
# 注意!路徑是相對路徑,用以在 current 目錄底下建立 symbolic link
# 真正的檔案或目錄需要使用者實際手動在 shared 目錄下建立 (後面會提到)
set :linked_files, fetch(:linked_files, []).push('path/to/file')
set :linked_dirs, fetch(:linked_dirs, []).push('path/to/directory')
# 定義 Capistrano 在遠端主機內運作時的環境變數
set :default_env, { MY_VAR1: "my_value1", MY_VAR2: "my_value2" }
# 需要保留的舊版本數量,預設是 5
set :keep_releases, 2
31. deploy.rb (3)
# 在預設的部署流程中添加自訂的任務
namespace :deploy do
desc 'description of my_task'
task :my_task do
# roles 是所要部署的主機角色,通常定義在 stage_name.rb 中
on roles(:role_name) do
# do something
end
end
after 'deploy:finished', 'deploy:my_task'
end
36. 執行 Capistrano 部署與還原
$ cap staging deploy
$ cap staging deploy:rollback
$ cap production deploy
$ cap production deploy:rollback
# rollback 實際上是將 current 指向 releases 底下前一版的目錄而已,非常快速。
37. Back to the story
Someone else’s Story ...
https://speakerdeck.com/aleiphoenix/automate-deploying-using-capistrano