2016-03-03 61 views
1

我正在研究Java/Spring Web應用程序,並且對軟件構建過程有疑問,特別是關於舞臺和產品環境。軟件部署過程

現在,在當前項目中,我們有一個以下過程 - 我們將Git dev代碼分支合併到舞臺上,然後使用Maven和Jenkins構建和部署項目來構建舞臺環境。一旦階段被驗證,我們正在合併階段來掌握Git分支,並再次使用Maven和Jenkins構建和部署項目進行生產。

這是一個正確的過程嗎?我們是否需要爲階段和prod環境構建單獨的war文件(就像我們目前所做的那樣),還是需要構建單個war文件,將其部署到env階段並提供階段參數,然後對其進行測試和驗證,然後部署同樣的戰爭文件來刺激環境,但與prod參數?

在第二種方法的情況下如何正確參數化必須在Tomcat上運行的單個應用程序,並使用stage和prod的不同參數?另外,我們正在使用Maven過濾功能..在這種情況下如何處理它呢?

回答

1

當從登臺到生產促進一個版本,你通常要部署的是完全相同的二進制版本到生產,以確保您在升級測試版本將具有相同的行爲在生產中。

當您爲生產製作新版本時,您無法保證它的行爲與您爲暫存製作的版本相同。對於您所知道的,構建服務器上的Java版本或其他工具可能在兩者之間發生了變化。

有多種方法可以解決配置問題。你應該從應用程序中剝離所有環境特定的配置(在你的情況下是一個WAR),這樣你就可以在所有的環境中使用相同的二進制文件。 接着,則可以:

  1. 管理在目標環境本身手動
  2. 使用供應系統像木偶或廚師自動推出配置更改
    或(該選項下面具有配置我的偏好:)
  3. 用每個環境的配置構建軟件包(只是普通的zip文件)。
    實施例構建結果:

    • application.war
    • config-tst.zip
    • config-stg.zip
    • config-prd.zip

所以,當您部署到測試環境時,您將部署war並解壓縮config-tst.zip。當你部署到分期,你部署相同的戰爭和config-stg.zip等

希望這會有所幫助,祝你好運!