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
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een actieve Azure DevOps-organisatie. Meld u aan voor Azure Pipelines.
- Een virtuele Linux-machine (VM) die wordt gehost in Azure.
- Als u een JavaScript- of Node.js-app wilt installeren, stelt u een Linux-VM in met Nginx in Azure. Zie Een Linux-VM maken met Azure CLI.
- Als u een Java Spring Boot- en Spring Cloud-apps wilt implementeren, maakt u een Linux-VM in Azure met behulp van de sjabloon Java 13 op Ubuntu 20.04 , die een volledig ondersteunde OpenJDK-runtime biedt.
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.
Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project.
Ga naar de pagina Pijplijnen en selecteer Omgevingen Omgeving maken>.
Geef een waarde op voor Naam (vereist) voor de omgeving en voor Beschrijving.
Kies Virtual Machines als resource die u wilt toevoegen aan de omgeving en selecteer vervolgens Volgende.
Kies Linux voor het besturingssysteem en kopieer het registratiescript.
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.
Zodra de VM is geregistreerd, wordt deze weergegeven als een omgevingsresource onder Resources.
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.
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.
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.
Meld u aan bij uw Azure DevOps-organisatie en ga naar uw project.
Ga in uw project naar de pagina Pijplijnen en kies vervolgens de actie om een nieuwe pijplijn te maken.
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.
Wanneer de lijst met opslagplaatsen wordt weergegeven, selecteert u de gewenste voorbeeld-app-opslagplaats.
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
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.
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.
Geef of
rolling
oprunOnce
als een implementatiestrategie.runOnce
is de eenvoudigste implementatiestrategie. Alle levenscyclushaken, namelijkpreDeploy
deploy
,routeTraffic
enpostRouteTraffic
, worden eenmaal uitgevoerd. Vervolgens wordt ofon:
success
on:
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
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.
Volgende stappen
Verwante artikelen:
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor