Bereitstellen auf Linux-VMs in einer Umgebung
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
In dieser Schnellstartanleitung erfahren Sie, wie Sie eine Azure DevOps-Pipeline für die Bereitstellung für mehrere virtuelle Linux-Computerressourcen (VM) in einer Umgebung einrichten. Sie können diese Anweisungen für jede App verwenden, die ein Webbereitstellungspaket veröffentlicht.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine Azure DevOps-Organisation und ein entsprechendes Projekt. Registrieren Sie sich für Azure Pipelines.
Für JavaScript- oder Node.js-Apps sind mindestens zwei Linux-VMs mit Nginx auf Azure eingerichtet.
Verzweigen des Beispielcodes
Wenn Sie bereits über eine App in GitHub verfügen, die Sie bereitstellen möchten, können Sie eine Pipeline für diesen Code erstellen.
Wenn Sie ein*e neue*r Benutzer*in sind, forken Sie dieses Repository in GitHub:
https://github.com/MicrosoftDocs/pipelines-javascript
Erstellen einer Umgebung mit Linux-VMs
Sie können virtuelle Computer als Ressourcen in Umgebungen hinzufügen und für Multi-VM-Bereitstellungen als Ziel festlegen. Der Bereitstellungsverlauf für die Umgebung bietet Rückverfolgbarkeit von der VM bis zum Commit.
Hinzufügen einer VM-Ressource
Navigieren Sie im Azure DevOps-Projekt zu Pipelines>Umgebungen. Wählen Sie dann Umgebung erstellen oder Neue Umgebung aus.
Fügen Sie auf dem ersten Bildschirm "Neue Umgebung " einen Namen und eine optionale Beschreibung hinzu.
Wählen Sie unter "Ressource" die Option "Virtuelle Computer" und dann "Weiter" aus.
Wählen Sie auf dem nächsten Bildschirm "Neue Umgebung " die Option "Linux" unter "Betriebssystem" aus.
Kopieren Sie das Linux-Registrierungsskript. Das Skript ist für alle Linux-VMs identisch, die der Umgebung hinzugefügt wurden.
Hinweis
Das PERSÖNLICHE Zugriffstoken (PERSONAL Access Token, PAT) des angemeldeten Benutzers wird bereits in das Skript eingefügt und läuft nach drei Stunden ab.
Wählen Sie "Schließen" aus, und beachten Sie, dass die neue Umgebung erstellt wird.
Führen Sie das kopierte Skript auf jeder Ziel-VM aus, die Sie bei der Umgebung registrieren möchten.
Hinweis
Wenn auf dem virtuellen Computer bereits ein anderer Agent ausgeführt wird, geben Sie einen eindeutigen Namen für den Agent für die Registrierung bei der Umgebung an.
Nachdem der virtuelle Computer registriert wurde, wird er als Ressource auf der Registerkarte "Ressourcen " der Umgebung angezeigt.
Wenn Sie das Skript erneut kopieren möchten, um weitere Ressourcen zu erstellen, z. B. wenn Ihr PAT abläuft, wählen Sie "Ressource hinzufügen" auf der Seite der Umgebung aus.
Hinzufügen und Verwalten von Tags
Tags sind eine Möglichkeit, eine bestimmte Gruppe von virtuellen Computern in einer Umgebung für die Bereitstellung zu adressieren. Sie können eine unbegrenzte Anzahl an Tags verwenden. Tags sind jeweils auf 256 Zeichen beschränkt.
Sie können Tags hinzufügen oder Tags für VMs im interaktiven Registrierungsskript oder über die Benutzeroberfläche entfernen, indem Sie "Weitere Aktionen" für eine VM-Ressource auswählen. Weisen Sie für diese Schnellstartanleitung jedem virtuellen Computer in Ihrer Umgebung ein anderes Tag zu.
Definieren einer CI-Buildpipeline
Sie benötigen eine Ci-Buildpipeline (Continuous Integration), die Ihre Web-App veröffentlicht, und ein Bereitstellungsskript, das lokal auf dem Linux-Server ausgeführt werden soll. Richten Sie Ihre CI-Buildpipeline basierend auf der Laufzeit ein, die Sie verwenden möchten.
Wichtig
Während GitHub-Verfahren werden Sie möglicherweise aufgefordert, eine GitHub-Dienstverbindung zu erstellen, oder werden zu GitHub umgeleitet, um sich anzumelden, Azure Pipelines zu installieren oder Azure Pipelines zu autorisieren. Folgen Sie den Anweisungen auf dem Bildschirm, um den Prozess abzuschließen. Weitere Informationen finden Sie unter Zugriff auf GitHub-Repositorys.
- Wählen Sie in Ihrem Azure DevOps-Projekt pipelines Create Pipelines aus, und wählen Sie dann GitHub als Speicherort Ihres Quellcodes>aus.
- Wählen Sie auf dem Bildschirm "Repository auswählen" Ihr Verzweigungsbeispiel-Repository aus.
- Wählen Sie im Bildschirm Pipeline konfigurieren die Option Starterpipeline aus. Azure Pipelines generiert eine YAML-Datei namens azure-pipelines.yml für Ihre Pipeline.
- Wählen Sie das Dropdown-Caret neben " Speichern" und "Ausführen" aus, wählen Sie "Speichern" und dann erneut " Speichern" aus. Die Datei wird in Ihrem Verzweigungs-GitHub-Repository gespeichert.
Bearbeiten des Codes
Wählen Sie "Bearbeiten" aus, und ersetzen Sie den Inhalt der azure-pipelines.yml Datei durch den folgenden Code. Sie fügen diesen YAML in zukünftigen Schritten hinzu.
Der folgende Code erstellt Ihr Node.js Projekt mit npm.
trigger:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
steps:
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run build --if-present
npm run test --if-present
displayName: 'npm install, build and test'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
artifact: drop
Weitere Informationen hierzu können Sie in den Schritten in "Erstellen Ihrer Node.js-App mit gulp " zum Erstellen eines Builds ausführen.
Ausführen Ihrer Pipeline
Wählen Sie "Überprüfen und speichern" und dann " Speichern", wählen Sie "Ausführen" und dann erneut "Ausführen" aus.
Vergewissern Sie sich nach der Ausführung der Pipeline, dass der Auftrag erfolgreich ausgeführt wurde und dass ein veröffentlichtes Artefakt angezeigt wird.
Bereitstellen auf den Linux-VMs
Bearbeiten Sie Ihre Pipeline, um den folgenden Bereitstellungsauftrag hinzuzufügen. Ersetzen Sie den
<environment name>
Namen der Umgebung, die Sie zuvor erstellt haben. Wählen Sie bestimmte VMs aus der Umgebung aus, um die Bereitstellung zu empfangen, indem Sie die<VM tag>
für jeden virtuellen Computer definierte Option angeben.jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> # Update value for VMs to deploy to strategy:
Weitere Informationen finden Sie in der definition "complete jobs.deployment".
Weitere Informationen zu dem Schlüsselwort und den
environment
Ressourcen für einen Bereitstellungsauftrag finden Sie in der Definition "jobs.deployment.environment".Geben Sie eine
runOnce
oderrolling
eine Bereitstellungstrategy
an.runOnce
ist die einfachste Bereitstellungsstrategie. DiepreDeploy
deploy
,routeTraffic
undpostRouteTraffic
Lebenszyklus-Hooks werden jeweils einmal ausgeführt. Dann wird entwederon:
success
oderon:
failure
ausgeführt.Der folgende Code zeigt einen Bereitstellungsauftrag für
runOnce
:jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> strategy: runOnce: deploy: steps: - script: echo my first deployment
Der folgende Code zeigt einen YAML-Codeausschnitt für die
rolling
Bereitstellungsstrategie mithilfe einer Java-Pipeline. Sie können bis zu fünf Ziele in jeder Iteration aktualisieren. DermaxParallel
Parameter gibt die Anzahl der Ziele an, die parallel bereitgestellt werden können.Die
maxParallel
Auswahl berücksichtigt die absolute Anzahl oder den Prozentsatz der Ziele, die jederzeit verfügbar bleiben müssen, ohne dass die Ziele bereitgestellt werden, und bestimmt die Erfolgs- und Fehlerbedingungen während der Bereitstellung.jobs: - deployment: VMDeploy displayName: web environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> strategy: rolling: maxParallel: 2 #for percentages, mention as x% preDeploy: steps: - download: current artifact: drop - script: echo initialize, cleanup, backup, install certs deploy: steps: - task: Bash@3 inputs: targetType: 'inline' script: | # Modify deployment script based on the app type echo "Starting deployment script run" sudo java -jar '$(Pipeline.Workspace)/drop/**/target/*.jar' routeTraffic: steps: - script: echo routing traffic postRouteTraffic: steps: - script: echo health check post-route traffic on: failure: steps: - script: echo Restore from backup! This is on failure success: steps: - script: echo Notify! This is on success
Bei jeder Ausführung dieses Auftrags wird der Bereitstellungsverlauf für die Umgebung aufgezeichnet, in der Sie die virtuellen Computer erstellt und registriert haben.
Zugriffspipeline-Rückverfolgbarkeit in der Umgebung
Die Ansicht "Bereitstellungen der Umgebung " bietet vollständige Rückverfolgbarkeit von Commits und Arbeitsaufgaben sowie einen pipelineübergreifenden Bereitstellungsverlauf für die Umgebung.