Freigeben über


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

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

  1. Navigieren Sie im Azure DevOps-Projekt zu Pipelines>Umgebungen. Wählen Sie dann Umgebung erstellen oder Neue Umgebung aus.

  2. Fügen Sie auf dem ersten Bildschirm "Neue Umgebung " einen Namen und eine optionale Beschreibung hinzu.

  3. Wählen Sie unter "Ressource" die Option "Virtuelle Computer" und dann "Weiter" aus.

  4. Wählen Sie auf dem nächsten Bildschirm "Neue Umgebung " die Option "Linux" unter "Betriebssystem" aus.

  5. Kopieren Sie das Linux-Registrierungsskript. Das Skript ist für alle Linux-VMs identisch, die der Umgebung hinzugefügt wurden.

    Screenshot der VM-Erstellung.

    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.

  6. Wählen Sie "Schließen" aus, und beachten Sie, dass die neue Umgebung erstellt wird.

  7. 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.

Screenshot der VM-Ressourcenansicht.

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.

Screenshot der Tag-Ansicht.

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.

  1. Wählen Sie in Ihrem Azure DevOps-Projekt pipelines Create Pipelines aus, und wählen Sie dann GitHub als Speicherort Ihres Quellcodes>aus.
  2. Wählen Sie auf dem Bildschirm "Repository auswählen" Ihr Verzweigungsbeispiel-Repository aus.
  3. 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.
  4. 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

  1. 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".

  2. Geben Sie eine runOnce oder rolling eine Bereitstellung strategyan.

    • runOnce ist die einfachste Bereitstellungsstrategie. Die preDeploy deploy, routeTrafficund postRouteTraffic Lebenszyklus-Hooks werden jeweils einmal ausgeführt. Dann wird entweder on: success oder on: 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. Der maxParallel 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.

Screenshot der Bereitstellungsansicht.