Freigeben über


Workflowaktivitäten für LabDefaultTemplate

In diesem Thema werden die Windows Workflow-Aktivitäten in der Datei "LabDefaultTemplate.11.xaml" beschrieben. In "LabDefaultTemplate" ist der Lab Management-Workflowprozess definiert, mit dem Sie Ihre Anwendung in einer Lab-Umgebung erstellen, bereitstellen und testen können. Weitere Informationen zu Windows Workflow finden Sie auf der Seite A Developer's Introduction to Windows Workflow Foundation (WF) in .NET 4 auf der MSDN-Website.

Anforderungen

  • Visual Studio Ultimate, Visual Studio Premium, Visual Studio Test Professional

Initialisieren des Workflows

Aktivität für Prozessstamm

Der Kern von "LabDefaultTemplate" ist die TfsBuild.Process-Aktivität. Diese ActivityBuilder-Klasse initialisiert die globalen Argumente für die Workflowbuilddefinition anhand der Eingabe im Fenster "Builddefinition" und im Assistenten für Lab-Workflowparameter.

Argumente

Das LabWorkflowParameters-Argument enthält die Daten, die im Assistenten für Lab-Workflowparameter angegeben wurden. Dieses Argument ist ein LabWorkflowDetails-Objekt, das die folgenden Objekte enthält:

BuildDetails

Ein Microsoft.TeamFoundation.Lab.Workflow.Activities.BuildDetails-Objekt, in dem die Builddetails für den Erstellen-Bereitstellen-Testen-Workflow gespeichert sind.

DeploymentDetails

Ein Microsoft.TeamFoundation.Lab.Workflow.Activities.DeploymentDetails-Objekt, in dem die Informationen gespeichert sind, die für die Bereitstellung eines Builds im Workflow erforderlich sind.

EnvironmentDetails

Ein Microsoft.TeamFoundation.Lab.Workflow.Activities.LabEnvironmentDetails-Objekt, in dem die Informationen gespeichert sind, mit denen die Umgebung für das Build-, Bereitstellungs- und Testszenario definiert wird.

TestParameters

Ein Microsoft.TeamFoundation.Lab.Workflow.Activities.RunTestDetails-Objekt, in dem die Testparameterdetails gespeichert sind, die zum Erstellen des automatisierten Testlaufs erforderlich sind.

Außerdem sind folgende Argumente im globalen Gültigkeitsbereich deklariert:

Argument

Typ

Metadata

ProcessParameter-MetadataCollection

Verbosity

Ein Verbosity-Enumerationswert, der die Menge an Informationen angibt, die in das Protokoll geschrieben werden.

BuildNumberFormat

Eine String-Klasse, die das Format der Buildnummer definiert.

SupportedReasons

Ein BuildReason-Enumerationswert, der den Grund für den Build angibt.

Sequenz "Workflow der Anwendungsbereitstellung"

Anwendungsbereitstellungsworkflow

Die Sequenz Workflow der Anwendungsbereitstellung steuert das gesamte Build-, Bereitstellungs- und Testszenario.

Der Workflow der Anwendungsbereitstellung deklariert die folgenden Variablen:

  • BuildDetail: Ein IBuildDetail-Objekt.

  • LabEnvironmnetUri: Eine String-Klasse, die den URI der Umgebung angibt, in der der Build bereitgestellt wird.

  • BuildLocation: Eine String-Klasse, mit der der Speicherort des Builds angegeben wird.

  • SnapshotId: Eine String-Klasse, die den Bezeichner einer Momentaufnahme eines virtuellen Computers angibt.

  • QueueBuildId: Eine Int32-Struktur, die den Bezeichner des Builds in der Warteschlange angibt.

Ausführen des Builds

Buildnummer aktualisieren

Mit Buildnummer aktualisieren wird die Buildnummer im BuildNumberFormat-Argument erweitert und zurückgegeben. Buildnummer aktualisieren ist eine Microsoft.TeamFoundation.Build.Workflow.Activities.UpdateBuildNumber-Aktivität.

Builddetails abrufen

Builddetails abrufen gibt die Daten zurück, die erforderlich sind, um den Build auszuführen, der im Workflow-Assistenten angegeben wurde, oder auf ihn zuzugreifen. Das IBuildDetail-Objekt wird in der BuildDetail-Variable gespeichert.

Builddetails abrufen ist eine Microsoft.TeamFoundation.Build.Workflow.Activities.GetBuildDetail-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • Result gibt ein IBuildDetail-Objekt für die BuildDetail-Variable zurück.

Aktivität bei erforderlichem Build

Wenn Build benötigt wird bestimmt, ob ein neuer Build für einen Team System-Buildprozess benötigt wird. Wenn die Bedingungen erfüllt sind, führt der Workflow die Sequenz Build ausführen aus.

Buildaktivität ausführen

Die Sequenz Build ausführen initiiert den Build, wartet auf den Abschluss des Builds und legt dann den Buildspeicherort fest.

Buildworkflow starten

Buildworkflow starten stellt einen neuen Build für den angegebenen Buildcontroller in die Warteschlange und gibt die ID des in der Warteschlange enthaltenen Builds in der QueueBuildId-Variable zurück. Buildworkflow starten ist eine RunWorkflow-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • BuildDefinition ist auf die BuildDetails.BuildDefinitionName-Eigenschaft des LabWorkflowParameters-Arguments festgelegt.

  • Das ProjectName-Argument ist auf die TeamProject-Eigenschaft der BuildDetail-Variable festgelegt.

Warten auf Abschluss des Buildvorgangs

Warten auf Abschluss des Buildvorgangs hält die Ausführung an, bis der Build abgeschlossen ist oder ein Timeoutintervall abgelaufen ist. Die Aktivität löst eine Ausnahme aus, wenn das Timeout erreicht wurde. Die Aktivität gibt den Status des Builds in der BuildStatus-Variable und Daten zum neuen Build in der ChildBuildDetail -Variable zurück. Warten auf Abschluss des Buildvorgangs ist eine WaitForWorkflow-Aktivität. Die Vorlage legt folgende Eigenschaftswerte fest:

  • AllowPartiallySucceededBuild ist auf "True" gesetzt.

  • BuildDetails gibt die Daten des neuen Builds an die ChildBuildDetail-Variable zurück.

  • MaxWaitTime ist auf "Unendlich" gesetzt.

  • QueueBuildId gibt die Warteschlangen-ID der QueueBuildId-Buildvariable zurück.

Buildort festlegen

Buildort festlegen weist den Ort des Builds von der ChildBuildDetail-Variable zur BuildDetails.BuildUri-Eigenschaft des LabWorkflowParameters-Arguments zu.

Bereitstellen der Anwendung

Bereitstellungszusammenfassung aktualisieren

Bereitstellungszusammenfassung aktualisieren gibt den Namen der Bereitstellungszielumgebung an die Buildseite aus. Bereitstellungszusammenfassung aktualisieren ist eine WriteDeploymentInformation-Aktivität.

GetBuildLocationAndBuildNumber

GetBuildLocationAndBuildNumber gibt den Ablagespeicherort für den Build an die BuildLocation-Variable zurück. GetBuildLocationAndBuildNumber ist eine GetBuildLocationAndBuildNumber-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • BuildDetails ist auf das BuildDetails-Objekt festgelegt, das im LabWorkflowParameters-Argument enthalten ist

  • BuildNumber gibt die Buildnummer an die BuildNumber-Variable zurück.

  • Result gibt den Speicherort des Builds an die BuildLocation-Variable zurück.

  • SelectedBuild gibt ein IBuildDetail-Objekt an die SelectedBuildDetail-Variable zurück, die die Builddaten auf dem Buildserver enthält.

Berechnen der erforderlichen Aktivität für die Erstellungsposition

Wenn die Erforderlichen Buildort berechnen-Bedingungen erfüllt sind, werden dem Ablageort mit Buildpfad berechnen Unterordner mit der Plattform- und Buildkonfiguration hinzugefügt.

Aktivität bei Benutzerauswahl einer gespeicherten Umgebung

Wenn vom Benutzer eine gespeicherte Umgebung ausgewählt wurde überprüft, ob die Umgebung bereitgestellt wird, und Fehler anzeigen löst eine Ausnahme aus, wenn die Umgebung in der Bibliothek gespeichert ist.

Lab-Umgebung abrufen

Lab-Umgebung abrufen gibt den URI der Umgebung an die LabEnvironmentUri-Variable zurück. Lab-Umgebung abrufen ist eine GetLabEnvironmentUri-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • LabEnvironmentName ist auf den Wert der EnvironmentDetails.LabEnvironmentName-Eigenschaft des LabWorkflowParameters-Arguments festgelegt.

  • ProjectName ist auf den Wert der TeamProject-Eigenschaft der BuildDetail-Variable festgelegt.

  • Result gibt den URI der Lab-Umgebung an die Variable LabEnvironmentUri zurück.

  • TeamProjectLabLocationName ist auf den Wert der EnvironmentDetails.HostGroupName-Eigenschaft des LabWorkflowParameters-Arguments festgelegt.

  • TfsServerUrl ist auf "NULL" festgelegt.

Aktivität bei Wiederherstellung einer Momentaufnahme

Wenn "Momentaufnahme reparieren" bestimmt, ob der Benutzer angefordert hat, dass die Umgebung auf eine fehlerfreie Momentaufnahme wiederhergestellt wird. Wenn die Bedingung erfüllt ist, wird die Sequenz Momentaufnahme reparieren ausgeführt; andernfalls schreibt Reine Momentaufnahme nicht angegeben eine Warnmeldung in die Buildzusammenfassung.

Aktivität bei Wiederherstellung einer Momentaufnahme

In der Sequenz Momentaufnahme reparieren berechnet Momentaufnahmendetails abrufen die ID der Momentaufnahme, und Lab-Umgebung in Momentaufnahme wiederherstellen führt die Wiederherstellung aus.

Momentaufnahmendetails abrufen

Momentaufnahmendetails abrufen ist eine GetLabEnvironmentSnapshotId-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • LabEnvironmentUri ist auf den Wert der LabEnvironmentUri-Variable festgelegt.

  • Result gibt die ID der Momentaufnahme an die SnapshotId-Variable zurück.

  • SnapshotName ist auf die EnvironmentDetails.SnapshotName -Eigenschaft des LabWorkflowParameters-Arguments festgelegt.

Lab-Umgebung in Momentaufnahme wiederherstellen

Lab-Umgebung in Momentaufnahme wiederherstellen ist eine RestoreLabEnvironment-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • LabEnvironmentUri ist auf den Wert der LabEnvironmentUri-Variable festgelegt.

  • SnapshotId ist auf den Wert der SnapshotId-Variable festgelegt.

Aktivität bei erforderlicher Bereitstellung

Wenn Bereitstellung erforderlich bestimmt, ob der Benutzer eine Bereitstellung angefordert hat.

Bereitstellungsaktivität ausführen

Wenn die Bedingung erfüllt ist, wird die Sequenz Bereitstellung ausführen ausgeführt.

Wartet, bis die Workflowfunktionsdienste bereit sind

Wartet, bis die Workflowfunktionsdienste bereit sind hält die Ausführung an, bis die Workflowfunktion für die Umgebung bereit ist oder ein Timeoutintervall erreicht wird. Wenn das Timeoutintervall überschritten wird, wird eine Ausnahme ausgelöst. Wartet, bis die Workflowfunktionsdienste bereit sind ist eine WaitForWorkflowCapabilityServices-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • LabEnvironmentUri ist auf den Wert der LabEnvironmentUri-Variable festgelegt.

  • MaxWaitTime ist auf 20 Minuten festgelegt.

  • RepairCapabilityBeforeWaitBegins ist auf "False" festgelegt.

Aktivität bei Ausführen von Bereitstellungsskript

Bereitstellungsskripts ausführen führt die Sequenz Skripts auf Lab-System ausführen für jedes Bereitstellungsskript aus, das in der DeploymentDetails.Scripts-Eigenschaftenliste des LabWorkflowParameters-Arguments enthalten ist.

Aktivität bei Ausführen von Skript in Lab-System

Die Sequenz Skripts auf Lab-System ausführen führt das angegebene Skript auf einem virtuellen Computer in der Umgebung aus. Skripts auf Lab-System ausführen deklariert die folgenden Variablen:

Agent-Tags und Bereitstellungsskript initialisieren

Agent-Tags und Bereitstellungsskript initialisieren erweitert die Makros und die Tags des Skripts und gibt die Ergebnisse in einem ScriptDetails-Objekt zurück. Agent-Tags und Bereitstellungsskript initialisieren ist eine InitializeAgentSpecAndEnvironmentVariables-Aktivität. Die Vorlage legt folgende Werte fest:

  • BuildLocation ist auf den Wert der BuildLocation-Variable festgelegt.

  • DeploymentScriptDetails ist auf den Wert der iterierten DeploymentDetails.Scripts-Zeichenfolge festgelegt.

  • LabEnvironmentUri ist auf den Wert der LabEnvironmentUri-Variable festgelegt.

  • Result gibt das erweiterte Skript an die scriptDetails-Variable zurück.

Lab-Agent-Bereich

Lab-Agent-Bereich bestimmt, ob der Lab-Agent auf dem virtuellen Zielcomputer installiert ist und ausgeführt wird, und ruft dann Ausführen von Bereitstellungsskript auf, um das Skript auszuführen. Eine Ausnahme wird ausgelöst, wenn Skripts auf einem Computer fehlschlagen. Lab-Agent-Bereich ist eine Microsoft.TeamFoundation.Build.Workflow.Activities.AgentScope-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • MaxExecutionTime ist auf "Unendlich" festgelegt.

  • MaxWaitTime ist auf 5 Minuten festgelegt.

  • ReservationSpec ist auf das Microsoft.Te:amFoundation.Build.Client.BuildAgentSpec-Objekt festgelegt, das die AgentSpec-Eigenschaft der scriptDetails-Variable ist.

Ausführen von Bereitstellungsskript

Ausführen von Bereitstellungsskript führt das Bereitstellungsskript auf dem virtuellen Zielcomputer aus. Ausführen von Bereitstellungsskript ist eine RunDeploymentScript-Aktivität. Die Vorlage legt folgende Werte fest:

  • ScriptDetails ist auf den Wert der scriptDetails-Variable festgelegt.

  • ThrowOnError ist auf "True" festgelegt.

  • SharedLocationForNetUse ist auf den Wert der BuildLocation-Variable festgelegt.

Anwendungsbereitstellung erfolgreich

Anwendungsbereitstellung erfolgreich schreibt Informationen in die Buildzusammenfassung. Anwendungsbereitstellung erfolgreich ist eine WriteDeploymentInformation-Aktivität.

Momentaufnahme nach Bereitstellung

Momentaufnahme nach Bereitstellung bestimmt, ob der Benutzer angefordert hat, dass eine Momentaufnahme der Umgebung nach der Bereitstellung gespeichert werden soll. Wenn diese Bedingung erfüllt ist, wird die Sequenz Momentaufnahme nach Bereitstellung erstellen ausgeführt. Andernfalls schreibt Momentaufnahme nach Bereitstellung nicht angegeben eine Warnmeldung in das Protokoll.

Aktivität bei Erstellen von Momentaufnahme nach Bereitstellung

Sequenz Momentaufnahme nach Bereitstellung erstellen

Momentaufnahme nach Bereitstellung erstellen deklariert die folgenden Variablen:

  • PostDeploymentSnapshotChainId: Int64

  • PostDeploymentSnapshotName: String Die Vorlage legt den Standardwert auf den Wert der BuildNumber-Eigenschaft der BuildDetails-Variable fest.

Aktivität für Namen der Momentaufnahme überprüfen

Namen der Momentaufnahme überprüfen bestimmt, ob ein Name für die Momentaufnahme angegeben wurde. Wenn die Bedingung erfüllt ist, wird der angegebene Name verwendet; andernfalls wird der Standardwert verwendet.

Momentaufnahme nach Bereitstellung wird erstellt

Momentaufnahme nach Bereitstellung wird erstellt ist eine SnapshotLabEnvironment-Aktivität, die die Momentaufnahme erstellt. Die Vorlage legt die folgenden Eigenschaften fest:

  • LabEnvironmentUri ist auf den Wert der LabEnvironmentUri-Variable festgelegt.

  • SnapshotChainId gibt die ID der Momentaufnahme an die PostDeploymentSnapshotChainId-Variable zurück.

  • SnapshotName ist auf den Wert der PostDeploymentSnapshotName-Variable festgelegt.

Erstellen der Momentaufnahme erfolgreich

Erstellen der Momentaufnahme erfolgreich schreibt den Namen der Momentaufnahme in die Buildzusammenfassung. Erstellen der Momentaufnahme erfolgreich ist eine WriteDeploymentInformation-Aktivität.

Hyperlink zur Momentaufnahme hinzugefügt

Hyperlink zur Momentaufnahme hinzugefügt schreibt die URL der Momentaufnahme in die Buildzusammenfassung. Hyperlink zur Momentaufnahme hinzugefügt ist eine WriteDeploymentInformation-Aktivität.

Tests werden ausgeführt

Aktivität bei Ausführen von Tests in der Umgebung

Umgebungstests ausführen bestimmt, ob automatisierte Tests angefordert wurden. Wenn die Bedingung erfüllt ist, wird die Sequenz Tests ausführen ausgeführt.

Aktivität bei Ausführen von Tests

Durchführen von Tests

Tests ausführen deklariert die folgenden Variablen:

  • TestCapabilityInfo: Microsoft.TeamFoundation.Lab.Client.TestingCapabilityInformation.

  • TestResults: Microsoft.TeamFoundation.Lab.Workflow.Activities.TestRunStatistics. Mit der Vorlage wird der Standardwert auf ein neues TestRunStatistics-Objekt festgelegt.

Wartet, bis die Testfunktionsdienste bereit sind

Wartet, bis die Testfunktionsdienste bereit sind hält die Ausführung an, bis die Testfunktion der Umgebung bereit ist oder ein Timeoutintervall erreicht wird. Wenn das Timeoutintervall überschritten wird, wird eine Ausnahme ausgelöst.

Wartet, bis die Testfunktionsdienste bereit sind ist eine WaitForTestCapabilityServices-Aktivität. Die Vorlage legt die folgenden Eigenschaften fest:

  • LabEnvironmentUri ist auf den Wert der LabEnvironmentUri-Variable festgelegt.

  • MaxWaitTime ist auf 20 Minuten festgelegt.

  • RepairCapabilityBeforeWaitBegins ist auf "False" festgelegt.

Tests werden ausgeführt

Tests werden ausgeführt führt die Tests aus und gibt die Testergebnisse zurück. Tests werden ausgeführt ist eine ExecuteRemoteTestRun-Aktivität. Die Vorlage legt folgende Werte fest:

  • MaxWaitTime ist auf "Unendlich" gesetzt.

  • BuildNumber ist auf den Wert der BuildNumber-Variable festgelegt.

  • TestDirectory ist auf den Wert der BuildLocation-Variable festgelegt.

  • LabEnvironmentUri ist auf den Wert der LabEnvironmentUri-Variable festgelegt.

  • TestParameters ist auf das TestParameters-Objekt festgelegt, das im LabWorkflowParameters-Objekt enthalten ist.

  • Result gibt das Microsoft.TeamFoundation.Lab.Workflow.Activities.RunTestDetails-Objekt zurück, das die Testergebnisse für die Variable TestResults enthält.

  • Titel legt den Namen des Testlaufs auf den Wert der BuildNumber-Eigenschaft der BuildDetail-Variable fest.

Aktivität bei Nichtbestehen aller Tests

Wenn kein Test bestanden wurde bestimmt, ob Tests fehlgeschlagen sind und führt Buildstatus festlegen aus, wenn die Bedingung erfüllt ist.

Buildstatus festlegen

Buildstatus festlegen bestimmt, ob der Workflow den Build oder die Bereitstellung der Anwendung enthält. Wenn diese Bedingung erfüllt ist, wird der Workflowstatus mit Teilweise erfolgreich auf den BuildStatus.PartiallySucceeded-Wert festgelegt. Andernfalls wird die BuildStatus-Variable mit Fehler auf Failed festgelegt.

Siehe auch

Konzepte

Lab-Management-Workflowaktivitäten