Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Du kan lägga till virtuella datorer som resurser i Azure Pipelines-miljöer och rikta dem mot distributioner. För ett arbetsflöde för kontinuerlig integrering och kontinuerlig distribution (CI/CD) ger miljöns distributionshistorik spårbarhet för varje virtuell dator tillbaka till den utlösande incheckningen.
Den här artikeln visar hur du konfigurerar en Azure DevOps-pipeline för distributioner till flera virtuella Linux-datorresurser (VM) i en miljö. De här anvisningarna skapar och distribuerar antingen en JavaScript- eller Java-app, men du kan anpassa dem för alla appar som publicerar ett webbdistributionspaket.
Mer information om miljöer och resurser som mål för ett distributionsjobb finns i schemadefinitionen jobs.deployment.environment YAML. Mer information om distributionsjobb finns i definition för jobs.deployment .
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En Azure DevOps-organisation och ett projekt. Registrera dig för Azure Pipelines.
För JavaScript- eller Node.js-appar:
- Minst två virtuella Linux-datorer har konfigurerats med Nginx i Azure.
- Din egen förgrening av GitHub-exempelkodlagringsplatsen på https://github.com/MicrosoftDocs/pipelines-javascript. Om du redan har en app i GitHub som du vill distribuera kan du använda koden i stället.
Viktigt!
- Om du vill distribuera appar måste virtuella målmiljöresurser för virtuella datorer ha all nödvändig programvara, beroenden, behörigheter och inloggningar installerade och konfigurerade.
- Om du vill använda GitHub-källkod behöver du en GitHub-tjänstanslutning. GitHub kan också uppmana dig att logga in, installera Azure Pipelines GitHub-appen eller auktorisera Azure Pipelines. Följ anvisningarna på skärmen för att slutföra varje process. Mer information finns i Åtkomst till GitHub-lagringsplatser.
Skapa en miljö och lägg till virtuella Linux-datorer
I ditt Azure Pipelines-projekt skapar du en miljö och lägger till dina virtuella Linux-datorer som miljöresurser genom att följa anvisningarna i Skapa en miljö och lägga till en virtuell dator.
Kör det kopierade agentregistreringsskriptet på varje virtuell dator för att registrera det i miljön. Du kan också tilldela taggar till de enskilda virtuella datorerna genom att svara på de interaktiva prompterna.
Skapa och starta byggrörledningen
Skapa en CI-pipeline som skapar och distribuerar din app när det finns en incheckning till grenen main av din kodlagringsplats.
Skapa YAML-pipelinen
- I ditt Azure DevOps-projekt väljer du Pipelines>Ny pipeline eller Skapa pipeline och sedan GitHub som plats för källkoden.
- På skärmen Välj en lagringsplats väljer du din förgrenade exempellagringsplats.
- På skärmen Konfigurera pipeline väljer du Startpipeline.
- På skärmen Granska din YAML-pipeline ersätter du den genererade startkoden med följande kod, beroende på din körtid.
Lägg till byggjobbet
Jobbet Build kör uppgifter för att skapa och testa projektet och laddar upp byggutdata till en drop plats. Det här jobbet körs på de byggagenter som anges i pipelinen pool, inte på dina virtuella Linux-miljödatorer.
Följande pipeline bygger och testar ditt Node.js projekt med npm, paketera sedan utdata och laddar upp det till en släppplats.
trigger:
- main
pool:
vmImage: ubuntu-latest
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: tar
tarCompression: gz
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).gz
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).gz
artifact: drop
För mer information, granska stegen för att bygga en kompilering av Skapa din Node.js-app med gulp.
Kör pipelinen
Om du vill spara azure-pipelines.yml filen på lagringsplatsen och starta CI/CD-pipelinen väljer du Spara och kör och väljer sedan Spara och kör igen.
När pipelinen är klar, visa jobbets sammanfattningssida för att kontrollera att byggjobbet har körts framgångsrikt och att 1 publicerad artefakt visas under Relaterade.
Lägga till och köra distributionsjobbet
Ett distributionsjobb kör preDeploy, deploy, routeTraffic och postRouteTraffic livscykelhakar en gång och kör sedan antingen on: success eller on: failure. Om du distribuerar till miljö-VM, så körs preDeploy-fasen på byggagenten, inte på miljö-VM. Alla andra steg körs på registrerade virtuella datorer i miljön.
- Det valfria
preDeploysteget körs före utplaceringen. Du kan använda det här steget för orkestrering, förberedelse av virtuella datorer och artefakter samt hälsokontroller. - Steget
deploydistribuerar distributionsobjektet till de virtuella målmiljöns virtuella datorer. - Det valfria
routeTrafficsteget kan använda trafikväxling. - Det valfria
postRouteTrafficsteget kan utföra hälsokontroller och meddelanden. - De anpassade
on.failurestegen ochon.successkan ge meddelanden eller återställning.
Ett distributionsjobb till en miljö med resourceType: VirtualMachine kräver att de virtuella miljödatorerna kan köra alla pipelineuppgifter, till exempel Bash eller Azure CLI. Du kan använda steget preDeploy för att installera nödvändig programvara och behörigheter på virtuella måldatorer.
Om ett distributionssteg till exempel använder Azure CLI måste de virtuella agentdatorerna ha Azure CLI installerat och tillgängligt på PATH för agentanvändaren. Agentanvändaren måste ha behörighet att köra CLI och måste autentisera till Azure. Du kan behöva lägga till agentanvändaren i sudoers eller konfigurera miljövariabler för att automatisera installationen.
Du kan använda ett preDeploy skript för att installera Azure CLI på de virtuella måldatorerna. Om du vill autentisera till Azure kan du köra az login, eller för automatisering, definiera ett huvudnamn för tjänsten och köra az login --service-principal i ett preDeploy steg.
Lägg till distributionsjobbet
Följande exempeldistributionsjobb startar när Build jobbet har slutförts. Så här lägger du till jobbet i pipelinen:
Välj ikonen Fler åtgärder uppe till höger på sidan Sammanfattning , välj Redigera pipeline och lägg till följande kod i slutet av pipelinen. Ersätt
<environment-name>med namnet på den miljö som du skapade.Du kan också välja specifika virtuella datorer från miljön för att ta emot distributionen med hjälp av parametern
tagsoch ange den<VMtag>du har definierat för den virtuella datorn.- deployment: VMDeploy displayName: Web deploy dependsOn: Build condition: succeeded() environment: name: <environment-name> resourceType: VirtualMachine tags: <VMtag> # VMs to deploy toLägg till en
strategyideploymentjobbet. RunOnce-distributionsstrategin är den enklaste och körs som standard om du inte angerstrategy. Den här strategin utför distributionsstegen en gång på varje virtuell dator i miljön, utan parallellitet eller trafikhantering.strategy: runOnce: deploy: steps: - script: echo my first deploymentNär du har lagt till distributionsjobbet väljer du Verifiera och sparar. Välj sedan Spara, kör och sedan Kör igen. Med varje körning av det här jobbet registreras distributionshistorik mot miljön.
Kommentar
Första gången du kör pipelinen som använder miljön måste du bevilja behörighet för alla körningar av pipelinen för att få åtkomst till agentpoolen och miljön. Välj symbolen Väntar bredvid jobbet på pipelinekörningsskärmen Sammanfattning och välj sedan Tillåt för att bevilja nödvändiga behörigheter.
Strategi för rullande distribution
Du kan använda en rolling i stället för runOnce distributionsstrategi . En rullande distributionsstrategi kan samordna parallellitet, hälsokontroller och trafikroutning.
runOnce Strategin körs på en enskild virtuell dator i taget, men en rullande distribution kan köras parallellt på rullande uppsättningar med upp till fem virtuella måldatorer, beroende på maxParallel inställningen.
Parametern maxParallel anger antalet eller procentandelen virtuella datorer som måste vara tillgängliga, vilket säkerställer att appen kan hantera begäranden och minska den totala stilleståndstiden under distributionerna. Den här parametern bestämmer även villkoren för lyckade och misslyckade distributioner.
Mer information om den löpande distributionsstrategin finns i schemadefinitionen jobs.deployment.strategy.rolling .
Exempel på distributionsjobb
Distributioner till VM-resurser kräver att de virtuella datorerna har alla nödvändiga appar, beroenden och behörigheter installerade och konfigurerade. Du måste förinstallera dessa krav manuellt, annars måste pipelinen installera eller implementera dem.
Java-appdistributionen till VM-resurser är enklare att implementera eftersom den är fristående. Den virtuella Java-datorn (JVM) är ofta förinstallerad på VM-agenter och du behöver inte bekymra dig om appberoenden, behörigheter eller pakethantering. Du kan bara ladda ned JAR-filen och sedan köra den med java -jar.
Den Node.js appen kräver att Node, eventuellt npm-beroenden, och en tjänsthanterare som systemd finns och konfigureras på varje virtuell agentdator. För att kunna automatiseras måste pipelinedistributionsskriptet vara icke-interaktivt och kunna starta om och hantera appens tjänst.
Följande distributionsjobb i YAML rolling för JavaScript-appen är beroende av att fasen Build har slutförts framgångsrikt. Distributionsjobbet förutsätter att följande krav redan är förinstallerade eller förkonfigurerade på varje virtuell agentdator. För fullständig automatisering kan du installera och konfigurera dessa appar och tjänster på de virtuella datorerna som en del av pipelinen.
- Node.js 16.x installerat och npm tillgängligt på byggagentens PATH.
- Systemd med en systembaserad tjänstfil som konfigurerats för tjänsten som startar Node.js-appen, till exempel /etc/systemd/system/pipelines-javascript.service.
- Lösenordslös sudo för agentanvändaren för nödvändiga kommandon, som anges med
NOPASSWD:i /etc/sudoers. - Skrivbehörigheter för agentanvändaren till /opt/pipelines-javascript eller annat distributionsmål.
Tips/Råd
För de flesta Node.js appar bör du överväga att distribuera till Azure App Service eller använda vanliga pipelinejobb med Microsoft-värdbaserade agenter i stället för att använda distributionsjobb. Den här metoden är enklare och undviker driftkostnaderna för att hantera vm-miljöer. Distribution till specifika VM-resurser passar bäst för scenarier som kräver direkt kontroll över de virtuella datorservrarna, avancerad orkestrering eller äldre infrastruktur.
- stage: Deploy
displayName: Rolling Deploy to VMs
dependsOn: Build
condition: succeeded()
jobs:
- deployment: RollingDeploy
displayName: Rolling deploy to Ubuntu VMs
environment:
name: <environment-name>
resourceType: VirtualMachine
strategy:
rolling:
maxParallel: 1 #or 2 for parallel. For percentages, use x%
preDeploy:
steps:
- download: current
artifact: drop
- script: echo "Pre-deploy on $(hostname)"
deploy:
steps:
- script: |
echo "Unpacking Node.js app on $(hostname)"
sudo mkdir -p /opt/pipelines-javascript
sudo tar -xzf $(Pipeline.Workspace)/drop/$(Build.BuildId).tar.gz -C /opt/pipelines-javascript --strip-components=1
cd /opt/pipelines-javascript
echo "Installing production dependencies"
sudo npm ci --only=production
echo "Restarting Node.js service"
sudo systemctl restart pipelines-javascript
displayName: 'Extract, install, and restart Node.js service'
routeTraffic:
steps:
- script: echo "Routing traffic on $(hostname)"
postRouteTraffic:
steps:
- script: echo "Post-route health check on $(hostname)"
on:
failure:
steps:
- script: echo "Deployment failed on $(hostname)"
success:
steps:
- script: echo "Deployment succeeded on $(hostname)"
Åtkomst till pipelinespårning i miljön
Fliken Miljödistributioner ger fullständig spårning av incheckningar och arbetsobjekt och en distributionshistorik för flera pipelines för miljön.