Dela via


Distribuera till virtuella Linux-datorer i en miljö

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

I den här snabbstarten får du lära dig hur du konfigurerar en Azure DevOps-pipeline för distribution till flera virtuella Linux-datorresurser (VM) i en miljö. Du kan använda de här anvisningarna för alla appar som publicerar ett webbdistributionspaket.

Förutsättningar

För JavaScript- eller Node.js-appar har minst två virtuella Linux-datorer konfigurerats med Nginx i Azure.

Förgrena exempelkoden

Om du redan har en app i GitHub som du vill distribuera kan du skapa en pipeline för koden.

Om du är en ny användare förgrenar du den här lagringsplatsen i GitHub:

https://github.com/MicrosoftDocs/pipelines-javascript

Skapa en miljö med virtuella Linux-datorer

Du kan lägga till virtuella datorer som resurser i miljöer och rikta dem mot distributioner med flera virtuella datorer. Distributionshistoriken för miljön ger spårning från den virtuella datorn till incheckningen.

Lägga till en VM-resurs

  1. I ditt Azure DevOps-projekt går du till Pipelines-miljöer> och väljer sedan Skapa miljö eller Ny miljö.

  2. På den första skärmen Ny miljö lägger du till ett Namn och en valfri Beskrivning.

  3. Under Resurs väljer du Virtuella datorer och sedan Nästa.

  4. På nästa skärm ny miljö väljer du Linux under Operativsystem.

  5. Kopiera Linux-registreringsskriptet. Skriptet är detsamma för alla virtuella Linux-datorer som har lagts till i miljön.

    Skärmbild av skapande av virtuell dator.

    Kommentar

    Den inloggade användarens personliga åtkomsttoken (PAT) infogas i skriptet och upphör att gälla efter tre timmar.

  6. Välj Stäng och observera att den nya miljön har skapats.

  7. Kör det kopierade skriptet på varje virtuell måldator som du vill registrera med miljön.

    Kommentar

    Om den virtuella datorn redan har en annan agent som körs på den anger du ett unikt namn som agenten kan registrera med miljön.

När den virtuella datorn har registrerats visas den som en resurs under fliken Resurser i miljön.

Skärmbild av resursvyn för virtuella datorer.

Om du vill kopiera skriptet igen för att skapa fler resurser, till exempel om din PAT upphör att gälla, väljer du Lägg till resurs på miljöns sida.

Lägga till och hantera taggar

Taggar är ett sätt att rikta in sig på en specifik uppsättning virtuella datorer i en miljö för distribution. Det finns ingen gräns för hur många taggar du kan använda. Taggarna är begränsade till 256 tecken vardera.

Du kan lägga till taggar eller ta bort taggar för virtuella datorer i det interaktiva registreringsskriptet eller via användargränssnittet genom att välja Fler åtgärder för en VM-resurs. I den här snabbstarten tilldelar du en annan tagg till varje virtuell dator i din miljö.

Skärmbild av vyn Taggar.

Definiera en CI-byggpipeline

Du behöver en pipeline för kontinuerlig integrering (CI) som publicerar webbappen och ett distributionsskript som ska köras lokalt på Linux-servern. Konfigurera ci-bygg-pipelinen baserat på den körning som du vill använda.

Viktigt!

Under GitHub-procedurerna kan du uppmanas att skapa en GitHub-tjänstanslutning eller omdirigeras till GitHub för att logga in, installera Azure Pipelines eller auktorisera Azure Pipelines. Följ anvisningarna på skärmen för att slutföra processen. Mer information finns i Åtkomst till GitHub-lagringsplatser.

  1. I ditt Azure DevOps-projekt väljer du Pipelines Create Pipeline (Pipelines>Create Pipeline) och sedan GitHub som plats för källkoden.
  2. På skärmen Välj en lagringsplats väljer du din förgrenade exempellagringsplats.
  3. På skärmen Konfigurera pipeline väljer du Startpipeline. Azure Pipelines genererar en YAML-fil med namnet azure-pipelines.yml för din pipeline.
  4. Välj listrutan bredvid Spara och kör, välj Spara och välj sedan Spara igen. Filen sparas på din förgrenade GitHub-lagringsplats.

Redigera koden

Välj Redigera och ersätt innehållet i azure-pipelines.yml-filen med följande kod. Du lägger till i denna YAML i framtida steg.

Följande kod skapar ditt Node.js projekt med 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

Mer information finns i stegen i Skapa din Node.js-app med gulp för att skapa en version.

Kör din pipeline

Välj Verifiera och spara, välj sedan Spara, välj Kör och välj Kör igen.

När pipelinen har körts kontrollerar du att jobbet har körts och att du ser en publicerad artefakt.

Distribuera till de virtuella Linux-datorerna

  1. Redigera din pipeline för att lägga till följande distributionsjobb. Ersätt <environment name> med namnet på den miljö som du skapade tidigare. Välj specifika virtuella datorer från miljön för att ta emot distributionen genom att ange det <VM tag> som du har definierat för varje virtuell dator.

    jobs:  
    - deployment: VMDeploy
      displayName: Web deploy
      environment:
        name:  <environment name>
        resourceType: VirtualMachine
        tags: <VM tag> # Update value for VMs to deploy to
      strategy:
    

    Mer information finns i den fullständiga definitionen för jobs.deployment.

    Mer information om nyckelordet environment och resurserna som ett distributionsjobb riktar sig till finns i definitionen jobs.deployment.environment.

  2. Ange antingen runOnce eller rolling som en distribution strategy.

    • runOnce är den enklaste distributionsstrategin. Livscykelkroken preDeploy deploy, routeTrafficoch körs var och postRouteTraffic en en gång. Sedan antingen on: success eller on: failure körs.

      Följande kod visar ett distributionsjobb 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
      
    • Följande kod visar ett YAML-kodfragment för distributionsstrategin rolling med hjälp av en Java-pipeline. Du kan uppdatera upp till fem mål i varje iteration. Parametern maxParallel anger antalet mål som kan distribueras parallellt.

      Valet maxParallel står för absolut antal eller procentandel av mål som måste vara tillgängliga när som helst, exklusive de mål som distribueras till, och bestämmer framgångs- och felförhållanden under distributionen.

      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
      

      Med varje körning av det här jobbet registreras distributionshistoriken mot den miljö som du skapade och registrerade de virtuella datorerna i.

Åtkomst till pipelinespårning i miljön

Miljödistributionsvyn ger fullständig spårning av incheckningar och arbetsobjekt och en distributionshistorik för flera pipelines för miljön.

Skärmbild av distributionsvyn.