2012-03-18 74 views
0

我們正在使用功能分支。如何避免將分支部署到生產服務器?

我們使用bash腳本來部署,並且該腳本有一個參數確定在何處部署:prod_server,test_env,local_virtualbox等

然而,功能樹枝和樹幹應始終被部署到只本地/測試和以前的穩定版本分支應該是唯一可以部署到prod env的分支。 (我問的唯一原因當然是最近我幾乎意外地用一些功能分支覆蓋了我們的產品)。

有沒有一種很好的方法來做到這一點?我是否錯過了一些適合這個問題的maven方法,或者我應該使用一些bashisms來檢查我正在工作的哪個分支,並根據參數中給定的env名稱進行限制?我應該只部署標籤而不是分支?

(不確定它是否相關,但是:java控制檯應用程序,spring shop,用於構建的maven)。

回答

1

單獨使用版本控制來解決這個問題: 如果您編寫構建bash腳本,在主幹或最新標記上執行svn co,並在此新鮮結帳上執行maven構建,則可以防止此問題。

如果你想在這個過程中使用maven: 我建議你在你的deploy bash腳本中放置一個檢查,以確保如果你在最後一個控制點能夠捕捉它的地方犯了一個錯誤。

在我與maven合作的項目中,我們將生產部分設計爲一個配置文件。由於產品配置文件是唯一包含部署所需信息的產品(最終名稱在第一次看到時對每一個產品都很明顯),因此不可能將非生產型產品部署到生產環境中,但我不會不認爲這適用於您(因爲您聲明您使用分支而不是用於特徵開發的配置文件)。

因此,在生產情景模式設置的finalName這樣和部署bash腳本檢查它和你應該罰款:

<profile> 
    <id>productive</id> 
    <build> 
     <finalName>MyProgram-productive-${version}</finalName> 
    </build> 
</profile> 

這樣,你總是有手動應用「,這是生產力「無論你在建什麼標誌。

但是這不會阻止你在功能分支上設置'這是生產率'標誌,因爲maven不知道它的版本控制情況。

相關問題