2017-10-15 100 views
1

在採用微服務架構時,我們發現我們有許多具有相同結構的項目。如何在VSTS上創建通用構建版本

.Net和.Net Core項目更具體,其中大部分都是作爲Azure應用程序服務(Web Apps)發佈的。

今天,我們必須爲每個項目/應用配置一個構建定義和一個發佈定義。

有沒有辦法只有一個構建定義和一個發佈定義可以通過任何簽入觸發,構建特定項目並創建發佈到特定應用服務的發佈?

謝謝

回答

1

是的,這是可能的。您可以構建和發佈定義,以分別構建/部署不同類型的項目。

假設你有git的回購兩個項目:

root 
    |___ .git  
    |___ dotnetProject 
      |___ dotnetProject.sln 
      |___ dotnetProject 
         |___ dotnetProject.csproj 
         |___ … 
    |___ dotnetCoreProject 
      |___ dotnetCoreProject.sln 
      |___ dotnetCoreProject 
         |___ dotnetCoreProject.csproj 
         |___ … 

詳細setps如下:

  1. 添加你需要建立和構建部署項目和釋放定義的所有任務。
  2. 定義兩個變量dotnetdotnetCore,默認值0分別在您的構建和版本定義中。
  3. 爲需要爲不同類型的項目構建/部署的任務設置自定義條件。

    • 對於構建/部署.NET項目,請使用以下的自定義條件的任務: enter image description here
    • 對於構建/部署.NET核心項目的任務,使用下面的自定義條件: enter image description here
  4. 通過添加PowerShell任務來檢測CI構建的哪個或哪些項目將被更改。

    在任務開始時添加PowerShell任務,並檢查上次提交時哪些文件已被更改。如果.NET項目已更改,請將dotnet變量設置爲值1,並創建一個文件dotnet,其內容爲1。如果.NET核心項目已更改,請將變量dotnetCore設置爲值1,然後創建一個文件dotnetCore,其內容爲1

    注:你也應該發佈文件dotnetdotnetCore爲構建工件,因爲你應該在發佈定義dotnetdotnetCore變量基於文件解析值。基於文件dotnetdotnetCore的文件變量值。

    在發佈定義的開始階段,添加一個PowerShell任務。檢查構建工件中的文件dotnet/dotnetCore。如果有,則根據文件內容更改相關變量。

+0

嗨Mariana!很有意思。但是在這種情況下,我希望僅使用一個構建定義在團隊項目中構建任何項目,並使用一個發佈定義來剝奪任何應用程序服務,並且此發佈定義必須能夠識別生成的構件並將它們發佈到正確的應用程序服務。可能嗎?可能會使用像你的例子中的變量? Thanksss –

+0

是的,這個例子可以實現這一點。您只需要添加具有不同自定義條件的多個Azure應用程序服務部署任務。只有自定義條件滿足,任務纔會運行。 –

+0

讓我們進行一些測試。謝謝!!! –