2017-09-28 56 views
0

我想知道是否可以在vsts中的單個提交中設置構建順序/優先級。VSTS - 在單個git commit中構建訂單

我遇到的情況是這樣的:

我有一個解決方案(一個庫)與多個項目。

  • 出版商
  • Subscriber1的
  • subscriber2用戶
  • 消息

每個這些(期望的消息)有一個疊合定義與路徑濾波器對每一個相應的項目(持續集成),並獲取釋放(連續部署觸發器)並在那裏進行初始化。

項目不相互依賴,期望用於溝通的消息。

因此,如果我對Publisher項目和任何訂閱服務器項目進行更改,然後提交,我希望始終首先構建和發佈Publisher項目。

因爲發佈者需要現在如果有訂閱者想要訂閱的新創建的消息。

這樣的事情可能嗎?

回答

1

VSTS無法指定現在由相同的代碼觸發的CI構建的順序。

我發佈了用戶聲音Specify queue builds order if there has multiple CI builds are triggered by the same code,您可以投票並跟進。

現在,您可以使用下面的解決方法:

  1. 構建所有項目即使只對某個項目(發佈者或訂閱)

    變化是否確定適合你要構建所有項目(即使只有項目的更改),可以定義構建定義以構建其中的所有項目。然後使用此構建作爲CI構建來替換多個CI構建。

  2. 相關的所有任務

    您還需要定義一個構建定義的所有任務,並添加兩個變量publishersubscriber默認值0設置自定義條件。

    並在開始構建時添加PowerShell任務以檢查哪些項目已更改。如果發佈商項目已更改,請將publisher變量設置爲值1。如果用戶項目已更改,請設置subscriber變量,值爲1

    然後使用c ustom conditions進行相關項目。如在構建Publisher項目任務中,使用自定義條件:and(succeeded(), eq(variables['publisher'], '1'))

    enter image description here

    接任務時publisher變量1只運行。您也可以參考this post以使用自定義條件的方式。

+0

Thx作爲答覆,學到了很多。我目前的「解決方法」是確保發佈者build-def具有最低的build-def-id,因爲看起來vsts總是在提交中從最低到最高的id建立。 –

0

一種解決方法是設置優先構建由持續集成被觸發,其他觸發滾動建立模式。 Rolling builds會在開始前等待CI

+0

Thx用於共享,但如果只有訂閱者發生更改(即發佈者沒有更改並且沒有被觸發),那麼這樣做會有用嗎? –