0

我正在構建一個VSTS構建管道,用於繼續集成和部署MVC Web項目。我的客戶想要0停機時間的情況下繼續部署,以便我們考慮重組源控制策略和分裂單一代碼庫到以下幾點:使用VSTS構建的部分部署 - 源代碼控制策略

核心功能

  1. 特點1個
  2. 特點2 .. ...
  3. 功能ň

我們計劃在保持特點的核心功能的子分支,並把個人的構建模板,每個branc的h和支行。因此,理想的情況是,如果核心功能分支有任何更改,則應該使用完整代碼(分支+子分支)來部署構建,但如果只更改了一個功能分支,則將僅對該分支執行繼續部署或分支中的功能。

因此,這需要指導的問題是: -

  • 是功能分支的想法是好的,可以在生產中使用?
  • .Net MVC應用程序是具有Web層,服務和存儲庫層的n層應用程序。我是否還應該在覈心和功能分支中拆分服務和存儲庫層以使其分離?
  • 如果我分裂的服務和倉庫,通訊不同功能之間應該如何發生的:

  • 通過服務來服務呼叫?就像功能1需要功能2的某些功能一樣,功能1服務會調用功能2服務併合並結果以將其發送到功能1 GUI?

  • 特徵1庫調用特徵2庫,但是這種方法將使特徵1對特徵2具有依賴性,這意味着如果特徵2在部署時關閉,則特徵1也經歷錯誤。

  • 將版本庫拆分爲若干功能是個不錯的主意?

感謝

+0

對術語要小心。您使用術語「功能分支」的方式不是它在業內常用的方式。功能分支用於隔離開發新功能,而不是用於管理不同應用程序組件的持續長期開發。 –

+0

@Daniel Mann,同意你的評論。但我知道的其他已知術語是子模塊源代碼控制方法,我猜想它是爲GIT源代碼控制保留的。你能提出一個最適合這個問題的名字嗎? – Riky

回答

0

拆分庫的幾個特點是確定的,因爲他們可以在其他應用(如移動應用)

我建議你可以考慮VSTS Packages feature或其他第三包飼料中使用。工作流程:通過使用NuGet task

  • 安裝需要的軟件包到web項目和編碼喂

    1. 更改推送到服務器>觸發CI構建>包和發佈包VSTS。
    2. Web項目的更改推送到服務器>觸發CI建立與當前已安裝的軟件包(不更新包)
    3. 更新必要包的新功能Web項目
    4. Web項目的更改推送到服務器>觸發CI build
  • +0

    這個答案與問題無關,我猜你應該再次讀這個問題。 – Riky

    +0

    本主題中的問題太多,但它們與單獨的存儲庫相關,如果相關項目需要使用新功能,我的觀點是使用軟件包管理並更新軟件包。你困惑什麼?你能否提供樣本來解釋它? –

    +0

    我們已經在使用Nuget Feed的包管理。這裏的重點是獲得有關如何拆分服務,存儲庫以及在拆分服務通信後使用繼續部署過程實現部分部署的方式的建議。即使我們將存儲庫用作包,更改包對於所有引用存儲庫的服務都需要停機。我對嗎? – Riky