Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Az Azure Pipelines-környezetekben erőforrásokként adhat hozzá virtuális gépeket, és üzembe helyezés céljából megcélzhatja őket. A folyamatos integrációs és folyamatos üzembe helyezési (CI/CD) munkafolyamat esetében a környezet üzembe helyezési előzményei nyomon követhetőséget biztosítanak az egyes virtuális gépek számára az eseményindító véglegesítésig.
Ez a cikk bemutatja, hogyan állíthat be Egy Azure DevOps-folyamatot több Linux rendszerű virtuálisgép-erőforrás üzembe helyezéséhez egy környezetben. Ezek az utasítások JavaScript- vagy Java-alkalmazásokat építenek ki és helyeznek üzembe, de bármely webterjesztési csomagot közzétevő alkalmazáshoz igazíthatja őket.
Az üzembe helyezési feladat által megcélzott környezetekről és erőforrásokról további információt a jobs.deployment.environment YAML sémadefinícióban talál. Az üzembehelyezési feladatokról további információt a jobs.deployment definícióban talál.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Egy Azure DevOps-szervezet és -projekt. Regisztráljon az Azure Pipelines szolgáltatásra.
JavaScript- vagy Node.js-alkalmazások esetén is:
- Legalább két Linux rendszerű virtuális gép van beállítva az Nginx használatával az Azure-ban.
- A GitHub mintakódtár saját „fork”-ja a következő helyen: https://github.com/MicrosoftDocs/pipelines-javascript. Ha már van egy üzembe helyezni kívánt alkalmazás a GitHubon, használhatja helyette a kódot.
Fontos
- Az alkalmazások telepítéséhez a célkörnyezeti virtuálisgép-erőforrásoknak telepítve és konfigurálva kell lenniük az összes szükséges szoftvernek, függőségnek, engedélynek és bejelentkezésnek.
- A GitHub-forráskód használatához GitHub-szolgáltatáskapcsolatra van szükség. A GitHub arra is megkérheti, hogy jelentkezzen be, telepítse az Azure Pipelines GitHub alkalmazást, vagy engedélyezze az Azure Pipelinest. Az egyes folyamatok elvégzéséhez kövesse a képernyőn megjelenő utasításokat. További információ: Hozzáférés a GitHub-adattárakhoz.
Környezet létrehozása és Linux rendszerű virtuális gépek hozzáadása
Az Azure Pipelines-projektben hozzon létre egy környezetet, és adja hozzá a Linux rendszerű virtuális gépeket környezeti erőforrásként a Környezet létrehozása és virtuális gép hozzáadása című témakör utasításait követve.
Futtassa a másolt ügynökregisztrációs szkriptet minden egyes virtuális gépen, hogy az regisztrálva legyen a környezetben. Az interaktív kérdések megválaszolásával címkéket is hozzárendelhet az egyes virtuális gépekhez.
A buildelési folyamat létrehozása és futtatása
Hozzon létre egy CI-folyamatot, amely létrehozza és üzembe helyezi az alkalmazást, amikor véglegesítés van a main kódtár ágában.
A YAML-folyamat létrehozása
- Az Azure DevOps-projektben válassza a Pipelines>New pipeline vagy a Create Pipeline lehetőséget, majd válassza a GitHubot a forráskód helyeként.
- A repozitórium kiválasztása képernyőn válassza ki a forkolt mintaadattárat.
- A Folyamat konfigurálása képernyőn válassza a Kezdő folyamatot.
- A folyamat YAML-jének áttekintése képernyőn cserélje le a létrehozott kezdőkódot a következő kódra a futtatókörnyezettől függően.
Build feladat hozzáadása
A Build feladat feladatokat futtat a projekt összeállításához és teszteléséhez, és feltölti a build kimenetét egy drop helyre. Ez a feladat a folyamatban poolmegadott buildügynökökön fut, nem a Linux-környezetbeli virtuális gépeken.
Az alábbi folyamat npm-lel hozza létre és teszteli a Node.js projektet, majd csomagolja a kimenetet, és feltölti egy drop helyre.
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
További információkért tekintse át a build létrehozásának lépéseit a Node.js-alkalmazás buildeléséhez a Gulp használatával.
Csővezeték futtatása
A azure-pipelines.yml fájl adattárba mentéséhez és a CI/CD-folyamat elindításához válassza a Mentés és futtatás, majd a Mentés és futtatás lehetőséget.
Amikor a folyamat befejeződött, tekintse meg a feladat összegzési oldalát annak ellenőrzéséhez, hogy a buildelési feladat sikeresen futott-e, és hogy 1 közzétett összetevő jelenik-e meg a Kapcsolódó területen.
Az üzembehelyezési feladat hozzáadása és futtatása
Az üzembehelyezési feladat egyszer végrehajtja a preDeploy, deploy, routeTraffic és postRouteTraffic életciklus-horgokat, majd végrehajtja vagy a on: success-t vagy a on: failure-t. Ha környezeti virtuális gépeken helyezi üzembe, a fázis a preDeploy build ügynökön fut, nem a környezeti virtuális gépeken. Az összes többi lépés a környezetben regisztrált virtuális gépeken fut.
- Az opcionális
preDeploylépés az üzembe helyezés előtt fut. Az feladatot orchestrációhoz, virtuális gépek előkészítéséhez, artifaktumok előkészítéséhez, valamint állapotellenőrzésekhez használhatja. - A
deploylépés üzembe helyezi az üzembehelyezési objektumot a célkörnyezeti virtuális gépeken. - Az opcionális
routeTrafficlépés a forgalomváltást is alkalmazhatja. - Az opcionális
postRouteTrafficlépés állapotellenőrzéseket és értesítéseket végezhet. - Az egyéni
on.failureéson.successa lépések értesítéseket vagy helyreállítást biztosíthatnak.
Egy környezetbe resourceType: VirtualMachine irányuló üzembehelyezési feladathoz a környezeti virtuális gépeknek minden folyamatfeladatot futtatniuk kell, például a Basht vagy az Azure CLI-t. A lépés segítségével telepítheti a preDeploy szükséges szoftvereket és engedélyeket a cél virtuális gépeken.
Ha például egy üzembe helyezési lépés az Azure CLI-t használja, az ügynök virtuális gépeinek telepítve kell lenniük az Azure CLI-vel, és elérhetővé kell lenniük az ügynökfelhasználó ELÉRÉSI ÚTJÁN. Az ügynökfelhasználónak engedéllyel kell rendelkeznie a parancssori felület futtatásához, és hitelesítenie kell magát az Azure-ban. Előfordulhat, hogy hozzá kell adnia az ügynök felhasználóját a sudoershez, vagy környezeti változókat kell beállítania a telepítés automatizálásához.
Egy szkripttel preDeploy telepítheti az Azure CLI-t a cél virtuális gépekre. Az Azure-val történő hitelesítéshez futtathat az login, vagy automatizálás céljából definiálhat egy szolgáltatásnevű objektumot, és futtathat az login --service-principal egy preDeploy lépésben.
Az üzembehelyezési feladat hozzáadása
A következő példa üzembehelyezési feladat a Build feladat sikeres befejezését követően indul el. A feladat hozzáadása a folyamathoz:
Válassza az Összefoglalás lap jobb felső részén található További műveletek ikont, válassza a Folyamat szerkesztése lehetőséget, és adja hozzá a következő kódot a folyamat végéhez. Cserélje le
<environment-name>a létrehozott környezet nevére.Ha szeretné, kiválaszthat bizonyos virtuális gépeket a környezetből az üzembe helyezés fogadásához a
tagsparaméterrel, és megadhatja a<VMtag>virtuális géphez megadott értéket.- deployment: VMDeploy displayName: Web deploy dependsOn: Build condition: succeeded() environment: name: <environment-name> resourceType: VirtualMachine tags: <VMtag> # VMs to deploy toAdjon hozzá egy
strategyelemet adeploymentfeladathoz. A runOnce telepítési stratégia a legegyszerűbb, és alapértelmezés szerint fut, ha nem adja megstrategy. Ez a stratégia egyszer hajtja végre az üzembe helyezési lépéseket a környezet minden virtuális gépén, párhuzamosság vagy forgalomkezelés nélkül.strategy: runOnce: deploy: steps: - script: echo my first deploymentAz üzembe helyezési feladat hozzáadása után válassza az Ellenőrzés és mentés, majd a Mentés, a Futtatás, majd a Futtatás újra lehetőséget. Az ütem minden futtatásakor az üzembe helyezési előzmények rekordjai az adott környezethez viszonyítva lesznek rögzítve.
Feljegyzés
Amikor először futtatja a környezetet használó folyamatot, engedélyt kell adnia a folyamat összes futtatására az ügynökkészlet és a környezet eléréséhez. Válassza a Folyamatfuttatásösszegzése képernyőn a feladat melletti Várakozás szimbólumot, majd válassza az Engedélyezés lehetőséget a szükséges engedélyek megadásához.
Szakaszos üzembe helyezési stratégia
Az üzembe helyezési rolling stratégia helyett használhatja a következőtrunOnce: A gördülő üzembehelyezési stratégia képes vezérelni a párhuzamosságot, az állapot-ellenőrzéseket és a forgalomirányítást. Bár a runOnce stratégia egyszerre egyetlen virtuális gépen fut, a működés közbeni üzembe helyezés a beállítástól függően maxParallel akár öt cél virtuális gépen is futtatható párhuzamosan.
A maxParallel paraméter beállítja azoknak a virtuális gépeknek a számát vagy százalékát, amelyeknek elérhetőnek kell maradniuk, biztosítva, hogy az alkalmazás kezelni tudja a kéréseket, és csökkentse a telepítések során fellépő állásidőt. Ez a paraméter az üzembe helyezés sikeres és sikertelen feltételeit is meghatározza.
A működés közbeni üzembe helyezési stratégiáról további információt a jobs.deployment.strategy.rolling sémadefinícióban talál.
Példa üzembehelyezési feladatra
A virtuálisgép-erőforrások üzembe helyezéséhez a virtuális gépeknek telepítve és konfigurálva kell lenniük az összes szükséges alkalmazásnak, függőségnek és engedélynek. Manuálisan kell előre telepítenie ezeket a követelményeket, vagy a folyamatnak telepítenie vagy implementálnia kell őket.
A Java-alkalmazás virtuálisgép-erőforrásokon való üzembe helyezése egyszerűbben implementálható, mert önálló. A Java virtuális gépet (JVM) gyakran előtelepítik a virtuálisgép-ügynökökre, és nem kell aggódnia az alkalmazásfüggőségek, az engedélyek vagy a csomagkezelés miatt. Egyszerűen letöltheti a JAR-fájlt, majd futtathatja a következővel java -jar: .
A Node.js alkalmazáshoz node-ra, esetleg npm-függőségekre, valamint egy olyan szolgáltatáskezelőre van szükség, mint a systemd, hogy minden ügynök virtuális gépen jelen legyen és konfigurálva legyen. Az automatizáláshoz a folyamat üzembehelyezési szkriptjének neminteraktívnak kell lennie, és képesnek kell lennie az alkalmazás szolgáltatásának újraindítására és kezelésére.
A JavaScript-alkalmazás következő YAML-üzembehelyezési rolling feladata a fázis sikeres Build befejezésétől függ. Az üzembe helyezési feladat feltételezi, hogy az alábbi követelmények már előre telepítve vannak vagy előre konfigurálva vannak minden ügynök virtuális gépen. A teljes automatizálás érdekében ezeket az alkalmazásokat és szolgáltatásokat a folyamat részeként telepítheti és konfigurálhatja a virtuális gépeken.
- Node.js 16.x van telepítve, és az npm elérhető a buildügynök PATH-ján.
- A rendszer egy rendszeralapú szolgáltatásfájllal van konfigurálva a Node.js alkalmazás elindításához, ilyen például /etc/systemd/system/pipelines-javascript.service.
- A jelszó nélküli sudo engedélyezése az ügynök felhasználó számára szükséges parancsokhoz a
NOPASSWD:fájlban lévő beállításokkal. - Írási engedélyek az ügynök felhasználója számára a /opt/pipelines-javascript vagy más üzembehelyezési cél számára.
Jótanács
A legtöbb Node.js alkalmazás esetében fontolja meg az Azure App Service-ben való üzembe helyezést, vagy a Microsoft által üzemeltetett ügynökökkel végzett rendszeres folyamatfeladatok használatát az üzembehelyezési feladatok használata helyett. Ez a megközelítés egyszerűbb, és elkerüli a virtuálisgép-környezetek kezelésével kapcsolatos üzemeltetési többletterhelést. Az adott virtuálisgép-erőforrások üzembe helyezése a legjobban a virtuálisgép-kiszolgálók közvetlen vezérlését, a speciális vezénylést vagy az örökölt infrastruktúrát igénylő forgatókönyvekhez ideális.
- 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)"
Hozzáférési folyamat nyomon követhetősége a környezetben
A Környezettelepítések lap a véglegesítések és a munkaelemek teljes nyomon követhetőségét, valamint a környezet folyamatközi üzembe helyezési előzményeit biztosítja.