Implementeren op een virtuele Linux-machine

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

Meer informatie over het instellen van een Azure DevOps-pijplijn voor implementaties van meerdere virtuele machines die gebruikmaken van een omgeving en virtuele-machineresources.

Gebruik de instructies in dit artikel voor elke app die een webimplementatiepakket publiceert.

Vereisten

Uw voorbeeldcode ophalen

Als u al een app in GitHub hebt die u wilt implementeren, kunt u een pijplijn voor die code maken.

Als u een nieuwe gebruiker bent, forkt u deze opslagplaats in GitHub:

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

Een omgeving maken met virtuele machines

U kunt virtuele machines toevoegen als resources binnen omgevingen en deze richten op implementaties met meerdere VM's. De weergave implementatiegeschiedenis biedt traceerbaarheid van de VM naar de doorvoer.

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project.

  2. Ga naar de pagina Pijplijnen en selecteer Omgevingen Omgeving maken>.

  3. Geef een waarde op voor Naam (vereist) voor de omgeving en voor Beschrijving.

  4. Kies Virtual Machines als resource die u wilt toevoegen aan de omgeving en selecteer vervolgens Volgende.

  5. Kies Linux voor het besturingssysteem en kopieer het registratiescript.

  6. Voer het registratiescript uit op elk van de doel-VM's die zijn geregistreerd bij de omgeving.

    Notitie

    • Het persoonlijke toegangstoken (PAT) van de aangemelde gebruiker wordt vooraf ingevoegd in het script en verloopt na drie uur.
    • Als op uw VM al een agent wordt uitgevoerd, geeft u een unieke naam op om u te registreren bij de omgeving.
  7. Zodra de VM is geregistreerd, wordt deze weergegeven als een omgevingsresource onder Resources.

    Schermopname van het maken van een VM.

  8. Als u meer VM's wilt toevoegen, kopieert u het script opnieuw. Selecteer Resource toevoegen en kies Virtual Machines. Dit script is hetzelfde voor alle VM's die u aan dezelfde omgeving wilt toevoegen.

    Elke VM communiceert met Azure Pipelines voor het coördineren van de implementatie van uw app.

    Schermopname van de vm-resourceweergave.

  9. U kunt tags voor de virtuele machine toevoegen of verwijderen. Selecteer op de puntjes aan het einde van elke VM-resource in Resources.

    Tags beperken de implementatie tot specifieke VM's wanneer de omgeving wordt gebruikt in een implementatietaak. Elke tag is beperkt tot 256 tekens. Er is geen limiet voor het aantal tags dat u kunt maken.

    Schermopname van de weergave tags.


CI-build-pipeline definiëren

U hebt een CI-build-pijplijn nodig waarmee uw web-app wordt gepubliceerd. U hebt ook een implementatiescript nodig dat lokaal kan worden uitgevoerd op de Ubuntu-server. Stel een CI-build-pipeline in op basis van de runtime die u wilt gebruiken.

  1. Meld u aan bij uw Azure DevOps-organisatie en ga naar uw project.

  2. Ga in uw project naar de pagina Pijplijnen en kies vervolgens de actie om een nieuwe pijplijn te maken.

  3. Selecteer GitHub als de locatie van uw broncode.

    U wordt mogelijk omgeleid naar GitHub om u aan te melden. Voer in dat geval uw GitHub-referenties in.

  4. Wanneer de lijst met opslagplaatsen wordt weergegeven, selecteert u de gewenste voorbeeld-app-opslagplaats.

  5. Azure Pipelines analyseert uw opslagplaats en beveelt een geschikte pijplijnsjabloon aan.

    Selecteer de startersjabloon en kopieer dit YAML-fragment om een algemeen Node.js-project te bouwen met npm. In toekomstige stappen voegt u toe aan deze YAML.

    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
    

    Raadpleeg de stappen in Uw Node.js-app bouwen met gulp voor het maken van een build voor meer hulp.

    • Selecteer Opslaan en voer>Doorvoeren rechtstreeks uit naar de hoofdbranch>Opslaan en uitvoeren.

      Er wordt een nieuwe uitvoering gestart. Wacht tot de uitvoering is voltooid.

CD-stappen definiëren voor implementatie naar de Linux-VM

  1. Bewerk uw pijplijn en voeg een implementatietaak toe door te verwijzen naar de omgeving en de VM-resources die u eerder hebt gemaakt. Werk tags bij om te verwijzen naar tags voor uw virtuele machine.

    jobs:  
    - deployment: VMDeploy
      displayName: Web deploy
      environment:
        name:  <environment name>
        resourceType: VirtualMachine
        tags: web1 # Update or remove value to match your tag
      strategy:
    

Zie het YAML-schema voor meer informatie over het environment trefwoord en de resources waarop een implementatietaak is gericht.

  1. Selecteer specifieke sets virtuele machines uit de omgeving om de implementatie te ontvangen door de tags op te geven die u hebt gedefinieerd voor elke VM in de omgeving.

    Zie het volledige YAML-schema voor implementatietaak voor meer informatie.

  2. Geef of rolling op runOnce als een implementatiestrategie.

    runOnce is de eenvoudigste implementatiestrategie. Alle levenscyclushaken, namelijk preDeploydeploy, routeTrafficen postRouteTraffic, worden eenmaal uitgevoerd. Vervolgens wordt of on:successon:failure uitgevoerd.

    Zie het volgende voorbeeld van een implementatietaak voor runOnce:

    jobs:
    - deployment: VMDeploy
      displayName: Web deploy
      environment:
        name: <environment name>
        resourceType: VirtualMachine
      strategy:
        runOnce:
          deploy:
            steps:
            - script: echo my first deployment
    
  3. Zie het volgende voorbeeld van een YAML-fragment voor de rolling-strategie met een Java-pijplijn. U kunt maximaal vijf doelen in elke iteratie bijwerken. maxParallel bepaalt het aantal doelen waarop parallel kan worden geïmplementeerd. De selectie houdt rekening met het absolute aantal of het percentage doelen dat op elk gewenst moment beschikbaar moet blijven, met uitzondering van de doelen die worden geïmplementeerd. Het wordt ook gebruikt om de voorwaarden voor succes en fouten tijdens de implementatie te bepalen.

    jobs: 
    - deployment: VMDeploy
      displayName: web
      environment:
        name: <environment name>
        resourceType: VirtualMachine
      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
    

    Bij elke uitvoering van deze taak wordt de implementatiegeschiedenis vastgelegd op basis van de <environment name> omgeving die u hebt gemaakt en de VM's hebt geregistreerd.

Traceerbaarheidsweergaven van pijplijnen in de omgeving

De weergave Implementaties biedt volledige traceerbaarheid van doorvoeringen en werkitems, en een implementatiegeschiedenis voor meerdere pijplijnen per omgeving.

Schermopname van de implementatieweergave.

Volgende stappen