3

我們用什麼:如何在一個解決方案中實現許多項目的持續集成和部署?

我們使用水銀和到位桶的倉庫。 Appveyor和kudu進行持續集成和部署。我們使用Visual Studio 2015作爲IDE。

我們有什麼:

我們有不同的Web項目。他們分享一些其他項目。所有的網絡項目都有自己的解決方案。每個解決方案都有自己的存儲庫

如果開發分支有變化。 Appveyor構建這個存儲庫,測試並部署它。

如果默認情況下有變化,kudu會構建這個存儲庫並進行部署。

我們所希望的:

我們要合併所有這些項目中的一個解決方案。但我無法弄清楚,我如何實現持續集成或部署。

如果我改變了webproject1上的某些東西,我只想構建和部署webproject1。解決方案中的其他web項目既不應該建立也不應部署。

+1

看來你並不需要1個解決方案。你想讓所有的項目在Visual Studio的同一個實例上打開?這就是您需要單一解決方案的原因嗎? –

+0

它與開發(調試,dependsicies,nuget等...) –

回答

0

也許一個存儲庫會幫助你。使用相對路徑來包含來自不同應用程序的共享庫。

每個應用程序仍然可以有自己的解決方案文件,您的CI設置也保持原樣。所有應用程序中共享項目的變化都將以相對路徑引用。例如: -

Repository root\Core\Component1\Component1.csproj Repository root\Core\Component2\Component2.csproj Repository root\Applications\App1\App1.sln Repository root\Applications\App1\Domain\Domain.csproj Repository root\Applications\App1\Web\Web.csproj Repository root\Applications\App2\App2.sln Repository root\Applications\App2\Domain\Domain.csproj Repository root\Applications\App2\Web\Web.csproj

現在您不同的應用程序可以通過使用相對路徑添加現有項目,以解決包括他們所需要的核心\組件。

您的持續集成系統將使VCS觸發器監視應用程序和依賴關係,因此只有相關更改纔會觸發構建。 因此,如果App1開發人員對Component1進行了更改,並且Component1也被App2使用,那麼構建服務器將觸發構建到App1和App2,發出任何重大更改的信號。但是,如果App2不依賴於Component1,那麼只有App1會生成。 這是通過配置應用程序的構建觸發器來實現的。

這一戰略VS具有單一的.sln的一個好處是,你就不必在每次你建立解決方案的時間來建立的一切(也沒有配置什麼項目,每次在不同的應用程序的工作時間來建立)

另請注意,您可以通過多個存儲庫實現此目的。但這意味着你需要在正確的位置檢查它們,以便你的相對路徑起作用。這也很模糊,因爲如果你檢出App1並嘗試構建它。它不會工作,你必須找出哪些其他回購檢查等。

您正在使用水銀,但FYI,這將與Git處理的方式(其中之一)與submodules

+0

你可以問你是否有問題。這種方法能幫助你嗎? –

相關問題