Konfigurieren von Anwendungen und VMs

Abgeschlossen

Es ist üblich, Apps und anderen benutzerdefinierten Code für Ihre Azure-Lösung zu erstellen. Benutzerdefinierte Apps können Websites, APIs und Hintergrund-Apps umfassen, die ohne menschliche Interaktion ausgeführt werden. In dieser Lerneinheit erfahren Sie, wie Sie eine Pipeline entwerfen, um eine App zusammen mit ihrer Infrastruktur zu erstellen und bereitzustellen.

Erstellen von Apps

Viele Arten von Apps müssen kompiliert oder erstellt werden, bevor sie verwendet werden können. Der Buildprozess verwendet den Quellcode für die App, führt eine Abfolge von Aktivitäten für die App aus und erstellt dann eine Reihe von bereitstellbaren Dateien.

Der Buildprozess kompiliert den Quellcode in Binärdateien oder ausführbare Dateien, enthält aber normalerweise auch andere Aktivitäten:

  • Komprimieren der Bilddateien, die den Benutzern Ihrer Website bereitgestellt werden.
  • Linten Ihres Codes, um zu überprüfen, ob er bewährte Codierungsmethoden befolgt.
  • Ausführen von Komponententests, die das Verhalten einzelner Teile Ihrer App überprüfen.

Sie können auch zusätzlich Schritte wie das digitale Signieren der Dateien ausführen, um sicherzustellen, dass sie nicht geändert werden können.

Unabhängig von der Reihe von Schritten ist die Ausgabe des Buildprozesses ein bereitstellbares Artefakt. Das Artefakt wird normalerweise im Dateisystem des Pipeline-Agents gespeichert. Spätere Phasen Ihrer Pipeline müssen mit dem Artefakt arbeiten, um es über Ihre Umgebungen bereitzustellen, und testen es, während es die Qualitätsprüfpunkte durchläuft, die Sie in Ihrer Pipelinedefinition definieren.

Hinweis

Möglicherweise haben Sie von den Begriffen Continuous Integration und Continuous Deployment, oder CI und CD, gehört. Ein Buildprozess befindet sich innerhalb des Continuous Integration-Teils Ihrer Pipeline.

Pipelineartefakte

Die Artefakte, die in Ihrer Pipeline generiert werden, werden nicht in Ihrem Git-Repository gespeichert. Sie werden aus dem Quellcode abgeleitet, sind aber nicht selbst Code und gehören daher nicht in ein Quellcodeverwaltungsrepository. Sie werden im Dateisystem des Pipeline-Agents erstellt. Da für jeden Pipelineauftrag ein neuer Agent erstellt wird, benötigen Sie eine Möglichkeit, um die Dateien für mehrere Aufträge und Agents freizugeben.

Pipelineartefakte bieten eine Möglichkeit, Dateien in Azure Pipelines zu speichern, und sie sind der jeweiligen Ausführung Ihrer Pipeline zugeordnet. Sie verwenden die integrierte Pipelineaufgabe PublishBuildArtifacts, um Azure Pipelines anzuweisen, eine Datei oder einen Ordner aus dem Dateisystem des Agents als Pipelineartefakt zu veröffentlichen:

- task: PublishBuildArtifacts@1
  displayName: Publish folder as a pipeline artifact
  inputs:
    artifactName: my-artifact-name
    pathToPublish: '$(Build.ArtifactStagingDirectory)/my-folder'

Die pathToPublish-Eigenschaft ist der Speicherort, der den kompilierten Code oder die Ausgabedateien im Dateisystem des Pipeline-Agents enthält. Der Inhalt an diesem Speicherort wird im Artefakt veröffentlicht. Sie können eine einzelne Datei oder einen Ordner angeben.

Jedes Artefakt hat einen Namen, den Sie mithilfe der Aufgabeneigenschaft artifactName angeben. Sie verwenden den Artefaktnamen, um später in der Pipeline darauf zu verweisen. Nachfolgende Pipelineaufträge und -phasen können das Artefakt herunterladen, damit es verwendet werden kann, um z. B. die Website auf dem Server bereitzustellen, auf dem sie gehostet wird:

Diagram that shows pipeline stages to build and deploy that refer to an artifact named Website.

Wenn Sie Bereitstellungsaufträge verwenden, werden Pipelineartefakte standardmäßig automatisch heruntergeladen. Wenn Sie reguläre Aufträge verwenden, verwenden Sie die Aufgabe DownloadBuildArtifacts, um ein Pipelineartefakt herunterzuladen:

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: current
    downloadType: single
    artifactName: my-artifact-name
    downloadPath: '$(System.ArtifactsDirectory)'

Bereitstellen von Apps

Der Buildprozess für eine App generiert und veröffentlicht ein bereitstellbares Artefakt. In späteren Phasen der Pipeline wird das Artefakt bereitgestellt. Wie Sie eine App bereitstellen, hängt von dem Dienst ab, den Sie zum Hosten verwenden.

Bereitstellung in Azure App Service

Ihr Spielzeugunternehmen verwendet Azure App Service, um seine Website zu hosten. Sie können eine App Service-App mit Bicep erstellen und konfigurieren. Wenn es jedoch an der Zeit ist, die App bereitzustellen, haben Sie mehrere Optionen, um die kompilierte App in die Hostinginfrastruktur zu verschieben. Diese Optionen werden als Teil der App Service-Datenebene verwaltet.

Der gängigste Ansatz ist die Verwendung der Azure Pipelines-Aufgabe AzureRmWebAppDeployment:

- task: AzureRmWebAppDeployment@4
  inputs:
    azureSubscription: MyServiceConnection
    ResourceGroupName: MyResourceGroup
    WebAppName: my-app-service
    Package: '$(Pipeline.Workspace)/my-artifact-name/website.zip'

Sie müssen mehrere Informationen bereitstellen, um Ihre App für App Service bereitzustellen. Diese Informationen umfassen die Ressourcengruppe und den Ressourcennamen der App Service-App, die Sie mithilfe der Eingaben ResourceGroupName und WebAppName angeben. Wie Sie in der vorherigen Lerneinheit gelernt haben, sollten Sie Ihrer Bicep-Datei eine Ausgabe hinzufügen und eine Pipelinevariable verwenden, um den App-Namen über Ihre Pipeline weiterzugeben. Sie müssen auch eine ZIP-Datei mit der App angeben, die bereitgestellt werden soll, indem Sie die Package-Eingabe verwenden, die normalerweise dem Pfad zu einem Pipelineartefakt entspricht.

App Service verfügt über ein eigenes Authentifizierungssystem auf Datenebene, das für Bereitstellungen verwendet wird. Die Aufgabe AzureRmWebAppDeployment übernimmt den Authentifizierungsprozess automatisch für Sie:

Diagram that shows the credential exchange process.

Die Aufgabe AzureRmWebAppDeployment verwendet den Dienstprinzipal, der Ihrer Dienstverbindung zugeordnet ist, um automatisch die erforderlichen Anmeldeinformationen für die Bereitstellung zu erstellen und herunterzuladen. Anschließend verwendet sie die Anmeldeinformationen für die Bereitstellung, wenn sie mit der App Service-API auf Datenebene kommuniziert.

App Service bietet auch einige andere bereitstellungsbezogene Features, einschließlich Bereitstellungsslots. Slots helfen Ihnen, neue Versionen Ihrer Apps sicher und ohne Downtime bereitzustellen. Sie helfen Ihnen auch dabei, die neue Version Ihrer Anwendung vorzubereiten und aufzuwärmen, bevor Sie Produktionsdatenverkehr an sie senden. Wir verwenden in diesem Modul keine Slots, aber wir stellen einen Link zu weiteren Informationen dazu auf der Seite „Zusammenfassung“ am Ende des Moduls bereit.

Bereitstellen von Apps für andere Azure-Dienste

Azure bietet viele weitere Optionen zum Hosten Ihrer Apps, von denen jede über einen eigenen Bereitstellungsansatz verfügt.

Azure Functions basiert auf App Service und verwendet einen Bereitstellungsprozess, der dem zuvor beschriebenen ähnelt.

Wenn Sie auf einer VM bereitstellen, müssen Sie normalerweise eine Verbindung mit der VM-Instanz herstellen, um Ihre App zu installieren. Häufig müssen Sie spezielle Tools wie Chef, Puppet oder Ansible verwenden, um eine Bereitstellung auf VMs zu orchestrieren.

Wenn Sie Kubernetes oder Azure Kubernetes Service (AKS) nutzen, verwenden Sie einen etwas anderen Ansatz, um Ihre Lösung zu erstellen und bereitzustellen. Nachdem Ihre App erstellt wurde, erstellt Ihre Pipeline ein Containerimage und veröffentlicht es in einer Containerregistrierung, aus der Ihr Kubernetes-Cluster dann liest. Da Ihre Containerregistrierung die kompilierte Anwendung bei sich hält, verwenden Sie in der Regel kein Pipelineartefakt.

In diesem Modul konzentrieren wir uns auf Azure App Service, um die zugehörigen Pipelinekonzepte zu veranschaulichen. Auf der Seite „Zusammenfassung“ am Ende des Moduls finden Sie Links zu weiteren Informationen zur Bereitstellung für andere Hostingdienste.

Testen von Apps in Ihrer Pipeline

In einem vorherigen Modul haben Sie erfahren, wie wertvoll und wichtig die Ausführung automatisierter Tests aus Ihrer Pipeline ist. Bei der Bereitstellung einer App hat es sich bewährt, dass die Pipeline einige Tests durchführt, die den Code der App aufrufen. Solche Tests verringern das Risiko, dass ein App- oder Bereitstellungsfehler zu Ausfallzeiten führt. In fortgeschritteneren Szenarios können Sie sogar eine Reihe von Testfällen für Ihre App ausführen, z. B. das Aufrufen von APIs oder das Übermitteln und Überwachen einer synthetischen Transaktion.

Viele Apps implementieren Endpunkte für die Integritätsprüfung. Wenn ein Integritätsprüfungsendpunkt eine Anforderung empfängt, führt er eine Reihe von Überprüfungen für die Website durch, um beispielsweise sicherzustellen, dass Datenbanken und Netzwerkdienste über die App-Umgebung erreichbar sind. Die Antwort, die die Website zurückgibt, gibt an, ob die App fehlerfrei ist. Entwickler können eigene Integritätsprüfungen schreiben und sie an die Anforderungen der App anpassen. Wenn Ihre App über einen Endpunkt für die Integritätsprüfung verfügt, ist es oft sinnvoll, ihn über Ihre Pipeline zu überwachen, nachdem die Bereitstellungsphase abgeschlossen ist.

Ihre Bereitstellungspipeline

In der nächsten Übung aktualisieren Sie Ihre Bereitstellungspipeline, um neue Aufträge für die Kompilierung der Websiteanwendung und deren Bereitstellung in den einzelnen Umgebungen hinzuzufügen:

Diagram that shows the revised pipeline, including a new build stage and an application deployment step.