2016-06-14 13 views
4

我正在使用Visual Studio Team Services(VSTS),以前稱爲Visual Studio Online(VSO)來構建Continuous Delivery管道。我的目標是儘可能地追蹤Jez Humble和David Farley的書Continuous Delivery在VSTS中發佈失敗時向所有開發人員發送通知(prev。VSO)

我想,當一個階段(VSTS中指定的環境)發生故障,通知(電子郵件)發送到每一個參與此版本開發商。該通知會說兩種:

  • 你打破了舞臺(迴歸)
  • 舞臺已經損壞(失敗)
  • 你固定的階段。 (固定)

目前,只有手動創建發佈的人員(或通過推送觸發構建的發佈以及發佈後的發佈)纔會收到此電子郵件,並且沒有我想要的信息。

我已經打了VSTS API一點點,可以得到一個特定的build相關的提交(和開發者的電子郵件)(而不是一個給定版本):

$token = "vsts token" 
$endpoint = "https://acme.visualstudio.com/DefaultCollection/MyProject/_apis/build/builds/42/changes?api-version=2.0" 

$b64creds = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($token):a")) 
$changes = Invoke-RestMethod -Headers @{Authorization="Basic $b64creds"} $endpoint 

$changes.value | ForEach-Object { $_.author.uniqueName } 

我已經看到在VSTS界面中,您可以看到在兩個版本之間添加了哪些提交。即使我沒有在API中找到這些信息,它也非常接近我想要的。但即使有了這些信息,我的項目的所有分支也使用相同的版本定義,例如Release-26將成爲一個功能分支,Release-27將進行開發。比較這兩個版本是沒​​有意義的。

我知道我可以從環境變量的發佈階段獲取構建標識,然後使用上面的腳本創建PowerShell任務或插入VSTS的Webservice。但是它只會在每個版本觸發一個版本時纔有效,事實並非總是如此。

您是否知道使用VSTS發送此通知的更好方法?
我是否使用正確的工具來處理這類事情?

+0

希望有一天我們會看到在Catlight中實施的發佈監控。它做了一個很好的工作,提醒團隊關於VSTS構建狀態,但是發佈跟蹤不存在 - http://catlight.helprace.com/i17-add-support-to-release-status – alex

回答

0

您只能將電子郵件警報發送給「環境所有者」&「發佈創建者」,目前無法自定義電子郵件警報中的內容,您可以在VSTS User Voice上提交功能請求。

Rest API是獲取這些信息的好工具。但是您提到您對所有分支都使用相同的版本定義。這根本不符合邏輯。不同的分支引用您的項目的不同版本,爲什麼您將它們全部部署在一個發佈管道中?如果您將工作流程配置爲每個分支的一個版本定義,分辨率將更加容易。您只需獲取以前版本的Build ID,然後在構建之後獲取更改。你還可以添加一個PowerShell任務,爲當前版本的TFVC/Git存儲庫創建一個標籤/標籤,以便你可以獲得標籤/標籤之間的變化。

+0

_不同的分支指的是不同版本的您的項目,爲什麼您將所有這些部署在一個發佈管道中?_ 當然,我完全同意,但我們希望有一篇文章[「成功的git分支模型」](http://nvie.com/posts/a-successful-git-branching-模型/)。 它涉及到很多分支的創建。這是我知道自動構建這些分支的唯一方法。我沒有在jenkins中找到類似多分支管道的選項。手工處理所有這些分支將會非常複雜並且適得其反。 –

+0

@ Q.Dufour在開發過程中可以有很多分支,但通常情況下,當其他分支中的代碼穩定並準備發佈時,該過程將合併所有更改回發佈或主分支。然後,您可以在發行版或主分支中構建和部署代碼。並且,當您使用Git存儲庫在VSTS中創建構建定義時,您只能爲一個構建定義選擇一個分支。但是您提到您的發佈定義適用於所有分支機構,您是否將發佈定義鏈接到服務器構建定義? –

+0

是的,我們將所有的功能分支合併在develop/master中。但在合併之前,我們希望檢查整個管道是否沒有損壞,並且我們使用發佈管理來構建此管道。它包括我們的集成測試,UI測試,性能測試,QA部署和驗證等。因此,我們會自動爲每個分支上的每個構建版本發佈一個版本,因爲我們希望儘快對每個代碼更改提供反饋。可能是問題... –

相關問題