2016-06-14 16 views
4

Ich verwende Visual Studio Team Services (VSTS), früher als Visual Studio Online (VSO) bekannt, um eine Continuous Delivery-Pipeline zu erstellen. Mein Ziel ist es, so nah wie möglich das Buch Continuous Delivery von Jez Humble und David Farley zu folgen.Benachrichtigung an alle Entwickler senden, wenn eine Veröffentlichung in VSTS fehlschlägt (vorher VSO)

Ich möchte, dass wenn eine Phase (namens Umgebung in VSTS) fehlschlägt, eine Benachrichtigung (eine E-Mail) an alle Entwickler in dieser Version beteiligt gesendet wird. Diese Meldung würde entweder sagen:

  • Sie die Bühne brach (Regression)
  • Die Bühne bereits gebrochen wurde (fehlgeschlagen)
  • Sie die Bühne fixiert. (Fixed)

Derzeit ist nur die Person, die die Freigabe manuell erstellt (oder durch Drücken der Commit, die die Build ausgelöst und danach die Freigabe) wird diese E-Mail erhalten und ohne die Informationen, die ich will.

ich ein wenig mit VSTS API gespielt haben, und die damit verbundenen Commits (und die Entwickler E-Mail) für einen bestimmten Build (aber nicht für eine bestimmte Freigabe) erhalten:

$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 } 

Ich habe gesehen, dass in VSTS-Schnittstelle können Sie sehen, welche Commits zwischen 2 Releases hinzugefügt wurden. Es ist sehr nahe von dem, was ich möchte, auch wenn ich diese Information nicht in der API gefunden habe. Aber selbst mit diesen Informationen wird für alle Zweige meines Projekts die gleiche Release-Definition verwendet, so dass beispielsweise Release-26 ein Feature-Zweig ist und Release-27 entwickelt wird. Es macht keinen Sinn diese 2 Versionen zu vergleichen.

Ich weiß, dass ich die Build-ID in einer Release-Phase von der Umgebungsvariablen erhalten kann, und danach mein Skript oben und erstellen Sie eine PowerShell-Task oder einen Webservice auf VSTS. Aber es wird nur funktionieren, wenn ein Release für jeden Build ausgelöst wird, was nicht immer der Fall ist.

Kennen Sie eine (bessere) Möglichkeit, diese Benachrichtigungen mit VSTS zu senden?
Und verwende ich das richtige Werkzeug für diese Art von Dingen?

+0

Wir werden hoffentlich eines Tages Release-Überwachung in Catlight implementiert sehen. Es macht einen ziemlich guten Job, das Team über den VSTS-Build-Status zu alarmieren, aber Release-Tracking ist nicht da - http://catlight.helprace.com/i17-add-support-to-release-status – alex

Antwort

0

Sie können die E-Mail-Benachrichtigung nur an "Umgebungseigentümer" & "Ersteller der Freigabe" senden und es gibt keine Möglichkeit, den Inhalt in der E-Mail-Benachrichtigung anzupassen. Sie können eine Funktionsanforderung unter VSTS User Voice einreichen.

Rest API ist ein gutes Werkzeug, um diese Informationen zu erhalten. Sie haben jedoch erwähnt, dass Sie für alle Zweige die gleiche Release-Definition verwenden. Das macht keinen Sinn. Verschiedene Zweige beziehen sich auf unterschiedliche Versionen Ihres Projekts. Warum stellen Sie alle in einer Release-Pipeline bereit? Wenn Sie Ihren Workflow pro Zweig auf eine Release-Definition konfigurieren, wäre die Auflösung einfacher. Sie müssen nur die Build-ID für die vorherige Version abrufen und dann die Änderungen nach diesem Build abrufen. Sie können auch eine Powershell-Task hinzufügen, um ein label/tag für TFVC/Git-Repositories für die aktuelle Release-Version zu erstellen, damit Sie die Änderungen zwischen den Labels/Tags erhalten.

+0

_Different Zweige beziehen sich auf verschiedene Versionen von Ihr Projekt, warum stellen Sie alle in einer Release-Pipeline bereit?_ Sicher stimme ich voll und ganz zu, aber wir wollen einen git-Workflow haben, wie im Artikel ["Ein erfolgreiches git-Verzweigungsmodell"] beschrieben (http://nvie.com/posts/a-successful-git-branching-). Modell/). Und es beinhaltet die Schaffung einer Menge von Zweigen. Und das ist die einzige Art, wie ich diese Zweige automatisch erstellen kann. Ich habe keine Option wie die Multi-Branch-Pipeline in Jenkins gefunden. Es wäre sehr kompliziert und kontraproduktiv, all diese Zweige von Hand zu bearbeiten. –

+0

@ Q.Dufour Sie können viele Zweige während der Entwicklung haben, aber normalerweise werden alle Änderungen wieder in den Release- oder Master-Zweig übernommen, wenn der Code in anderen Zweigen stabil und bereit zur Freigabe ist. Dann können Sie den Code im Release- oder Master-Zweig erstellen und bereitstellen. Wenn Sie eine Builddefinition in VSTS mit Git-Repository erstellen, können Sie nur eine Verzweigung für eine Builddefinition auswählen. Aber Sie haben erwähnt, dass Ihre Release-Definition für alle Zweige gilt. Verknüpfen Sie die Release-Definition mit Server-Build-Definitionen? –

+0

Ja, wir vereinen alle unsere Feature-Zweige in develop/master. Vor dem Zusammenführen möchten wir jedoch überprüfen, ob unsere gesamte Pipeline nicht beschädigt ist, und wir verwenden das Release-Management, um diese Pipeline zu erstellen. Dazu gehören unsere Integrationstests, UI-Tests, Leistungstests, die Bereitstellung auf QA und seine Validierung usw. Wir lösen daher automatisch eine Version für jeden Build in jedem Zweig aus, da wir so schnell wie möglich eine Rückmeldung zu jedem Codewechsel erhalten möchten. Könnte das Problem sein ... –