Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Virtuální počítače můžete přidat jako prostředky v prostředích Azure Pipelines a cílit je na nasazení. V případě pracovního postupu kontinuální integrace a průběžného nasazování (CI/CD) umožňuje historie nasazení prostředí sledovat jednotlivé virtuální počítače zpět ke spouštěcímu potvrzení.
V tomto článku se dozvíte, jak nastavit pipeline Azure DevOps pro nasazení do několika prostředků virtuálního počítače (VM) s Linuxem v prostředí. Tyto pokyny sestavují a nasazují javascriptovou nebo java aplikaci, ale můžete je přizpůsobit pro libovolnou aplikaci, která publikuje balíček pro nasazení webu.
Další informace o prostředích a prostředcích cílených úlohou nasazení najdete v definici schématu YAML jobs.deployment.environment . Další informace o úlohách nasazení najdete v definici jobs.deployment .
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Organizace a projekt Azure DevOps Zaregistrujte se ke službě Azure Pipelines.
Také pro javascriptové nebo Node.js aplikace:
- Alespoň dva virtuální počítače s Linuxem nastavené pomocí Nginx v Azure.
- Vlastní fork úložiště vzorového kódu GitHubu na adrese https://github.com/MicrosoftDocs/pipelines-javascript. Pokud už máte aplikaci na GitHubu, kterou chcete nasadit, můžete místo toho použít svůj kód.
Důležité
- Aby bylo možné nasazovat aplikace, musí mít prostředky virtuálních počítačů cílového prostředí nainstalovaný a nakonfigurovaný veškerý potřebný software, závislosti, oprávnění a přihlášení.
- Pokud chcete použít zdrojový kód GitHubu, potřebujete připojení ke službě GitHub. GitHub vás také může vyzvat k přihlášení, instalaci aplikace Azure Pipelines GitHub nebo autorizaci Azure Pipelines. Jednotlivé procesy dokončíte podle pokynů na obrazovce. Další informace najdete v tématu Přístup k úložištím GitHub.
Vytvoření prostředí a přidání virtuálních počítačů s Linuxem
V projektu Azure Pipelines vytvořte prostředí a přidejte virtuální počítače s Linuxem jako prostředky prostředí podle pokynů v tématu Vytvoření prostředí a přidejte virtuální počítač.
Spuštěním zkopírovaného registračního skriptu agenta na každém virtuálním počítači ho zaregistrujte v prostředí. Značky můžete také přiřadit jednotlivým virtuálním počítačům tak, že odpovíte na interaktivní výzvy.
Vytvoření a spuštění kanálu buildu
Vytvořte kanál CI, který sestaví a nasadí vaši aplikaci pokaždé, když dojde k potvrzení větve main úložiště kódu.
Vytvoření kanálu YAML
- V projektu Azure DevOps vyberte Kanály>Nový neboVytvořit kanál a pak jako umístění zdrojového kódu vyberte GitHub .
- Na obrazovce Vybrat úložiště vyberte vaše rozvětvované ukázkové úložiště.
- Na obrazovce Konfigurace kanálu vyberte Počáteční kanál.
- Na obrazovce Zkontrolujte YAML vaší pipeline nahraďte vygenerovaný počáteční kód následujícím kódem v závislosti na vašem modulu runtime.
Přidání úlohy sestavení
Úloha Build spouští úkoly pro sestavení a testování vašeho projektu a nahraje výstup ze sestavení na drop umístění. Tato úloha běží na agentech sestavení zadaných v kanálu pool, ne na virtuálních počítačích s Linuxem.
Následující potrubí sestaví a otestuje váš projekt Node.js pomocí npm, poté zabalí výstup a nahraje ho do úložného místa.
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
Další informace najdete v krocích pro vytvoření sestavení v sestavení aplikace Node.js pomocí nástroje gulp.
Spustit potrubí
Pokud chcete soubor azure-pipelines.yml uložit do úložiště a spustit kanál CI/CD, vyberte Uložit a spusťte a pak vyberte Uložit a spustit znovu.
Po dokončení kanálu zobrazte stránku Souhrn úlohy a ověřte, že úloha sestavení proběhla úspěšně a že se v části Související zobrazí 1 publikovaný artefakt.
Přidejte a spusťte úlohu nasazení
Úloha nasazení spustí preDeploy, deploy, routeTraffic, a postRouteTraffic háky životního cyklu jednou a potom spustí buď on: success nebo on: failure. Pokud nasadíte do virtálních strojů prostředí, fáze preDeploy se spustí na sestavovacím agentu, nikoliv na virtuálních strojích prostředí. Všechny ostatní kroky se spouštějí na registrovaných virtuálních počítačích v prostředí.
- Volitelný krok
preDeployse spustí před nasazením. Tento krok můžete použít pro orchestraci, přípravu virtuálních počítačů, přípravu artefaktů a zdravotní kontroly. - Tento
deploykrok nasadí objekt nasazení do virtuálních počítačů cílového prostředí. - Volitelný
routeTraffickrok může použít přepínání provozu. - Volitelný
postRouteTraffickrok může provádět kontroly stavu a oznámení. - Vlastní
on.failureaon.successkroky můžou poskytovat oznámení nebo obnovení.
Úloha nasazení do prostředí s resourceType: VirtualMachine vyžaduje, aby virtuální počítače tohoto prostředí mohly spouštět všechny úlohy kanálu CI/CD, jako je Bash nebo Azure CLI. Tento krok můžete použít k instalaci potřebného preDeploy softwaru a oprávnění na cílové virtuální počítače.
Pokud například krok nasazení používá Azure CLI, musí mít virtuální počítače agenta nainstalované a dostupné v cestě PATH pro uživatele agenta. Uživatel agenta musí mít oprávnění ke spuštění rozhraní příkazového řádku a musí se ověřit v Azure. Možná budete muset přidat uživatele agenta do sudoers nebo nastavit proměnné prostředí pro automatizaci instalace.
K instalaci Azure CLI na cílové virtuální počítače můžete použít preDeploy skript. Pokud se chcete ověřit v Azure, můžete spustit az login, nebo pro automatizaci definovat objekt zabezpečení a spustit az login --service-principal v kroku preDeploy.
Přidejte úlohu nasazení
Následující příklad úlohy nasazení se spustí po Build úspěšném dokončení úlohy. Přidání úlohy do pipeline:
Vyberte ikonu Další akce v pravém horním rohu na stránce Souhrn , vyberte Upravit kanál a na konec kanálu přidejte následující kód. Nahraďte
<environment-name>názvem prostředí, které jste vytvořili.Volitelně můžete vybrat konkrétní virtuální počítače z prostředí k obdržení nasazení pomocí parametru
tagsa specifikace<VMtag>, kterou jste definovali pro virtuální počítač.- deployment: VMDeploy displayName: Web deploy dependsOn: Build condition: succeeded() environment: name: <environment-name> resourceType: VirtualMachine tags: <VMtag> # VMs to deploy toPřidejte
strategyk úlozedeployment. Strategie nasazení runOnce je nejjednodušší a spustí se ve výchozím nastavení, pokud nezadátestrategy. Tato strategie provede kroky nasazení jednou na každém virtuálním počítači v prostředí bez paralelismu nebo správy provozu.strategy: runOnce: deploy: steps: - script: echo my first deploymentPo přidání úlohy nasazení vyberte Ověřit a uložit, pak vyberte Uložit, vyberte Spustit a vyberte Spustit znovu. Při každém spuštění této úlohy se zaznamenává historie nasazení ve vztahu k prostředí.
Poznámka:
Při prvním spuštění kanálu, který používá prostředí, musíte udělit oprávnění pro všechna spuštění kanálu pro přístup k fondu agentů a prostředí. Vyberte symbol Čekání vedle úlohy na obrazovce Souhrn spuštění kanálu a pak vyberte Povolit udělit potřebná oprávnění.
Strategie postupného nasazení
Můžete použít rolling místo runOnce strategie nasazení .
Strategie postupného nasazení může orchestrovat paralelismus, kontroly stavu a směrování provozu. Zatímco se runOnce strategie provádí na jednom virtuálním počítači najednou, průběžné nasazení může běžet paralelně na kumulativních sadách až pěti cílových virtuálních počítačů v závislosti na maxParallel nastavení.
Parametr maxParallel nastaví počet nebo procento virtuálních počítačů, které musí zůstat dostupné, a zajistí, aby aplikace během nasazení zvládla požadavky a snížila celkový výpadek. Tento parametr také určuje podmínky úspěchu a selhání pro nasazení.
Další informace o strategii postupného nasazení najdete v definici schématu jobs.deployment.strategy.rolling .
Příklad úlohy nasazení
Nasazení do prostředků virtuálních počítačů vyžadují, aby virtuální počítače měly nainstalované a nakonfigurované všechny požadované aplikace, závislosti a oprávnění. Tyto požadavky musíte předem nainstalovat ručně, nebo je musí nainstalovat nebo implementovat pipeline.
Nasazení Java aplikace do prostředků virtuálních počítačů je jednodušší implementovat, protože je nezávislé. Virtuální počítač Java (JVM) je často předinstalovaný na agentech virtuálních počítačů a nemusíte se starat o závislosti aplikací, oprávnění nebo správu balíčků. Stačí stáhnout soubor JAR a pak ho spustit s java -jar.
Aplikace Node.js vyžaduje, aby na každém virtuálním počítači agenta byla přítomna a nakonfigurovaná služba Node, případně závislosti npm a správce služeb, jako je systemd. Aby mohl být skript pro nasazení kanálu automatizován, musí být neinteraktivní a schopný restartu a správy služby aplikace.
Následující úloha nasazení YAML rolling pro JavaScriptovou aplikaci závisí na úspěšném dokončení etapy Build. Úloha nasazení předpokládá, že na každém virtuálním počítači agenta jsou už předinstalované nebo předkonfigurované následující požadavky. Pro úplnou automatizaci můžete tyto aplikace a služby nainstalovat a nakonfigurovat na virtuálních počítačích jako součást zpracování.
- Node.js ve verzi 16.x je nainstalován a npm je dostupný v PATH agenta sestavení.
- Systemd se systémovým servisním souborem nakonfigurovaným pro službu, která spouští Node.js aplikaci, například /etc/systemd/system/pipelines-javascript.service.
- Sudo bez hesla pro uživatele agenta pro nezbytné příkazy, nastavené s parametrem
NOPASSWD:/etc/sudoers. - Oprávnění k zápisu pro uživatele agenta do /opt/pipelines-javascript nebo jiného cíle nasazení
Návod
U většiny aplikací Node.js zvažte nasazení do služby Azure App Service nebo použití běžných pipeline úloh s agenty hostovanými společností Microsoft místo deployment úloh. Tento přístup je jednodušší a zabraňuje provozní režii při správě prostředí virtuálních počítačů. Nasazení do konkrétních prostředků virtuálních počítačů je nejvhodnější pro scénáře vyžadující přímou kontrolu nad servery virtuálních počítačů, pokročilou orchestrací nebo starší infrastrukturou.
- 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)"
Sledovatelnost kanálu přístupu v prostředí
Karta Nasazení pro dané prostředí poskytuje úplnou sledovatelnost potvrzení a pracovních položek i historii nasazení napříč kanály pro dané prostředí.