Freigeben über


Integrieren von DevTest Labs und DevOps CI/CD-Pipelines

DevOps ist eine Softwareentwicklungsmethode, die Softwareentwicklung (Dev) in Systemvorgänge (Ops) integriert. Das System hilft Ihnen bei der Bereitstellung neuer Softwarefeatures, -updates und -fixes, die den Geschäftszielen entsprechen.

Die DevOps-Methodik umfasst auch:

  • Entwerfen neuer Features basierend auf Zielen, Nutzungsmustern und Kundenfeedback.
  • Beheben, Wiederherstellen und Härtung des Systems, wenn Probleme auftreten.

Eine Komponente der DevOps-Methodik ist die Continuous Integration (CI) und die Continuous Delivery (CD)-Pipeline. Eine CI/CD-Pipeline verschiebt Informationen, Code und Ressourcen aus einem Commit der Quellcodeverwaltung über eine Reihe von Schritten, um das System zu erzeugen. Die Schritte umfassen Build, Test und Release.

Sie können Azure DevTest Labs in CI/CD-Pipelines verwenden. In diesem Artikel wird die Verwendung von DevTest Labs in CI/CD-Build-, Test- und Releasepipelinen in einer Unternehmensumgebung erläutert.

Vorteile der Verwendung von DevTest Labs in DevOps-Workflows

Ein Labor sollte nur von einem Team verwendet werden, das an einem Featurebereich arbeitet. Dieser Fokus ermöglicht schnellere Änderungen, beschränkt jedoch alle negativen Auswirkungen auf eine kleinere Gruppe. Änderungen oder Probleme treten in der Laborumgebung auf, ohne sich auf etwas anderes zu auswirken.

Dieser Fokus ermöglicht auch die Freigabe von bereichsspezifischen Ressourcen wie Tools, Skripts und Arm-Vorlagen (Azure Resource Manager). Entwickler können gemeinsam genutzte Ressourcen verwenden, um virtuelle Computer (VMs) mit allen benötigten Code, Tools und Konfigurationen zu erstellen. ARM-Vorlagen erstellen Lab-VMs und Lab-Umgebungen mit den entsprechenden Azure-Ressourcen. Die Vorlagen erstellen Ressourcen dynamisch oder durch Erstellen von Basisimages mit Anpassungen.

Betrachten Sie beispielsweise ein Szenario, in dem das Produkt ein eigenständiges System ist, das auf dem Computer eines Kunden installiert wird. Um schnelle iterative Codetests zu ermöglichen, können DevTest Labs Lab-VMs erstellen, auf denen Kundensoftware, Artefakte und Konfigurationen vorkonfiguriert sind.

Hier sind einige Vorteile der Verwendung von Labs in DevOps-Workflows:

  • Die Verwendung eines Labors als Komponente assoziiert ein bestimmtes Ökosystem mit einer begrenzten Anzahl von Personen. Normalerweise hat ein Team oder eine Gruppe, die in einem gemeinsamen Bereich arbeitet, oder einem bestimmten Feature ein Labor zugewiesen. Usually, a team or group working in a common area or a specific feature has a lab assigned to them.

  • Infrastrukturreplikation in der Cloud. Ein Entwickler kann schnell ein Entwicklungsökosystem einrichten, das eine Entwickler-VM mit Quellcode und Tools enthält. Um eine schnellere Inner-Loop-Entwicklung zu ermöglichen, kann ein Entwickler auch eine Umgebung erstellen, die nahezu identisch mit der Produktionskonfiguration ist.

  • Um asynchrone Tests zu ermöglichen, kann ein Labor in der CI/CD-Pipeline mehrere verschiedene Vorproduktionsumgebungen oder Computer gleichzeitig ausführen. Sie können verschiedene Supportinfrastrukturen bereitstellen und verwalten und Agents in einem Labor erstellen. You can deploy and manage different support infrastructures and build agents in a lab.

Verwendung von Labs in CI/CD-Pipelines

Die CI/CD-Pipeline ist eine wichtige DevOps-Komponente. Die Pipeline integriert den Code aus der Pullanforderung eines Entwicklers in vorhandenen Code und stellt den Code im Produktionsökosystem bereit. Bei der DevTest Labs-Integration müssen nicht alle Ressourcen in einem Labor vorhanden sein. Beispielsweise könnten Sie einen Jenkins-Host außerhalb des Labors für eine persistentere Ressource einrichten. Hier sind einige konkrete Beispiele für die Integration von Laboren in die CI/CD-Pipeline.

Build

Die Buildpipeline erstellt ein Paket von Komponenten, um zusammen zu testen und freizugeben. Dynamisches Erstellen einer Infrastruktur ermöglicht eine bessere Kontrolle. Labs können wie die Speicherorte der Build-Agents und andere unterstützende Ressourcen Teil der Buildpipeline sein. DevTest Labs kann den Laborzugriff einschränken. Dadurch wird die Sicherheit für Bau-Agents erhöht und das Risiko einer versehentlichen Beschädigung verringert.

Da Sie mehrere Umgebungen in einer Übung haben können, kann jeder Build asynchron ausgeführt werden. Die Build-ID ist Teil der Umgebungsinformationen, die die Ressourcen in einem bestimmten Build eindeutig identifizieren.

Test

Eine CI/CD-Pipeline kann das Erstellen von DevTest Labs-Ressourcen wie VMs und Umgebungen für automatisierte und manuelle Tests automatisieren. Die Pipeline verwendet Build-Informations-Artefakte oder Formeln für das Erstellen von VMs mit unterschiedlichen benutzerdefinierten Testkonfigurationen.

Release

Der Releaseprozess kann DevTest Labs zur Überprüfung verwenden, bevor der Code bereitgestellt wird. Der Prozess ähnelt dem Testen. Produktionsressourcen sollten nicht in DevTest Labs bereitgestellt werden.

Customization

Azure Pipelines, eine Komponente von Azure DevOps Services, bietet vorhandene Aufgaben zum Bearbeiten von VMs und Umgebungen in bestimmten Laboren. Azure Pipelines ist eine Möglichkeit, die CI/CD-Pipeline zu verwalten. Sie können ein Lab in jedes System integrieren, das das Aufrufen von REST-APIs, das Ausführen von PowerShell-Skripts oder die Azure CLI unterstützt.

Einige CI/CD-Pipelinemanager verfügen über vorhandene Open-Source-Plug-Ins, die Azure- und DevTest Labs-Ressourcen verwalten können. Möglicherweise müssen Sie benutzerdefinierte Skripts verwenden, um den Anforderungen der Pipeline gerecht zu werden. Bei der Ausführung eines Tasks wird ein Dienstprinzipal mit der entsprechenden Rolle (in der Regel „Mitwirkende“) für den Zugriff auf das Lab verwendet.

Next steps