2017-08-02 79 views
4

我的團隊正在使用VSTS Build &發佈機制,結合拉取請求分支安全設置,以便代碼只能在拉取請求完成時合併。VSTS發佈拉取請求生成觸發器

我們正在經歷一些奇怪的事情,因爲當創建一個拉取請求(並且生成一個生成證明提交的時候) - 由pull請求觸發的這個構建的完成也間接地觸發了釋放,因爲我們有一個釋放觸發器設置。

這本身可能是好的,但是接下來發生的事情是'完成'拉請求,另一個版本&發佈週期發生!

有沒有辦法讓VSTS釋放觸發器只在拉取請求完成並且合併到發佈分支時才啓動?

謝謝!

回答

6

您只需要克隆您當前的構建定義並禁用CI構建,然後使用克隆構建來驗證創建的PR。

首先,對於下面的設置如下變化:

1.克隆版本。

點擊... CI構建按鈕 - >克隆 - >編輯克隆構建定義 - >禁用CI構建 - >保存。

enter image description here

2.更換分支政策的克隆版本。

打開分支策略 - >編輯構建驗證策略 - >選擇克隆的構建定義 - >保存。

enter image description here

所以工作流程將是:

  1. 改變創建拉入請求時,克隆的構建將已觸發的/。
  2. 當克隆版本排隊成功時,您可以完成PR。
  3. 當PR完成(更改已合併)時,CI構建將被觸發。
  4. 當CI構建排隊成功時,CD版本將被觸發。

現在,只有PR完成併合併到release分支中,纔會觸發發佈定義。

+3

這個解決方案肯定會起作用,但它並不像我想的那麼優雅。這裏有兩個問題 - 首先我們創建了一個構建重複,這很難維護。其次,門控版本可能會有一些不必再次運行的步驟,例如lint和test(因爲它們剛剛在相同的代碼上成功運行)。但是,分離工件創建還需要再次運行來自門控構建的一些構建步驟。我的問題是 - 您可以提供一個解決方案,在門控和CI構建之間不存在任務重複? – kDar

2

我們可以在發佈觸發器上指定分支過濾器,這樣只有主版本纔會觸發發佈。 PR驗證構建是在不同的分支中完成的。批准後,分支合併到主控中,這就是您想要觸發發佈的構建。令人煩惱的是,他們不停地移動東西。在撰寫本文時,編輯發行版時,在管道下的工件下的工件上,內部有一個帶有閃電的圓圈,工具提示指出「連續部署觸發器」 - 單擊它。在右側,如果啓用了觸發器,您會看到「構建分支過濾器」。點擊「+添加」並選擇主分支。保存發佈定義。

至於構建做不同的事情,我們現在可以設置任務的條件,以便您可以讓一個任務只在PR驗證版本上運行,或者只在主版本上運行。

https://docs.microsoft.com/en-us/vsts/build-release/concepts/process/conditions