2016-08-01 185 views
3

我們有一個非常簡單的分支策略:與capistrano部署一次特定分支?

  • 開發 - >開發分支
  • 分期 - >臨時服務器部署分公司
  • 主 - >生產中科

我們的生產部署工作流程開發 - >分期 - >主。我們總是首先進行部署,我們測試一段時間,然後部署到生產環境。

現在,我們在一個新的功能,我想測試正在努力。我不想把它放在舞臺上,因爲既然是實驗性的,我不想鎖定生產部署,直到功能完成。

有沒有辦法對Capistrano的說,我要爲一個特定的部署分支,這樣我就可以把這個實驗代碼分期進行測試呢?

OBS:我需要把分期的原因是,這段代碼依賴於很多是在分期已配置外部資源,並就難以在本地複製。

回答

6

這裏是我如何做到這一點。

在我config/deploy/staging.rb文件的頂部,我把這個:

set :branch, ENV.fetch("CAPISTRANO_BRANCH", "staging") 

這告訴Capistrano的是,當我運行cap staging deploy,使用staging分支默認,但允許通過CAPISTRANO_BRANCH環境變量來覆蓋。

所以,現在如果我想部署一個定製的分支升級,它是如此簡單:

CAPISTRANO_BRANCH=my-feature cap staging deploy 
+0

它實際上是一個好主意,謝謝。 – lcguida

+0

在mac終端中設置'CAPISTRANO_BRANCH變量像這樣,不會讓這個變量以軌道控制檯內描述的方式訪問。我以類似的方式使用它:export CAPSTRANO_BRANCH ='my_feature';您可以通過以下方式刪除變量:unset CAPISTRANO_BRANCH(在zsh上測試) – Ekkstein