2017-07-17 53 views
1

我一直在爲此奮鬥了一天以上。我在VSTS CI/CD管道中有一個簡單的要求,我試圖建立任何遵循模式release/*hotfix/*的分支應該觸發部署到我的QA環境。下面是我基於支路的構成:CI/CD部署條件不觸發

enter image description here

預期此配置不觸發部署。正如你在下面的屏幕截圖中看到的那樣,該版本運行但沒有觸發我的任何環境。 (QA是右側第二個灰色方塊,根據部署是成功還是失敗,應爲綠色或紅色)。

enter image description here

在試圖解決這個問題,我試圖用建立標籤來代替。我添加了一個Powershell步驟,該步驟根據分支的名稱有條件地添加Build Tags。

$branchName = $Env:BUILD_SOURCEBRANCH 

if ($branchName -like '*release/*') 
{ 
    Write-Host "##vso[build.addbuildtag]release" 
} 

if ($branchName -like '*hotfix/*') 
{ 
    Write-Host "##vso[build.addbuildtag]hotfix" 
} 

正確設置構建標記,因爲我可以在構建工件和標記所應用的日誌上看到它們。然而,修改我的部署條件是標籤完全相同的行爲,知道結果使用我嘗試分支:

enter image description here enter image description here

編輯: 按照要求,這裏是中獲取源代碼的CI定義顯示的步驟。這裏沒有選擇添加多個分支條件的選項。它們在觸發器部分中設置。

Get Sources CI Config CI Triggers

+0

你用一個分支而不是通配符模式試過嗎? –

+0

@DanielMann是的,它唯一觸發的時間是如果我指定一個特定的分支名稱。作爲臨時解決方案,我可以手動添加已知的發行版/修補程序分支,但VSTS應該支持更智能的部署條件。所有通過用戶界面,他們讓你做模式匹配 –

+0

你也可以分享釋放工件的設置?它是一個構建?如果是,則在構建定義中共享「獲取源」步驟的設置。 –

回答

1

這通常是由兩種不同的條件造成了同一時間配置,因爲VSTS使用「AND」操作符,而不是「OR」操作在這裏。在這種情況下,部署條件如下所示:"Artifact Branch from Release/*" AND "Artifact Branch from Feature/*"無法滿足。如果您雙擊「版本28」打開它並將鼠標移動到「我」圖標上,您應該看到它未被觸發的原因。請檢查是否是我上面提到的原因。

enter image description here

解決方法是創建一個新的部署環境和克隆從QA的設置,然後將兩個條件在兩個環境中分離出來。

+0

謝謝!我不敢相信這是最簡單的事情。用戶界面可以更清楚地瞭解如何應用條件來幫助避免這種混淆。 –