Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Azure DevOps Services | Azure DevOps Server 2022
Ez a cikk bemutatja, hogyan használhatja az Azure Pipelinest a webalkalmazás automatikus összeállítására, tesztelésére és üzembe helyezésére az Azure App Service-ben. Beállíthat egy folyamatos integrációs és folyamatos kézbesítési (CI/CD) folyamatot, amely akkor fut, amikor a kód az adattár egy kijelölt ágára változik.
A folyamatok szakaszokból, feladatokból és lépésekből állnak. A lépés a folyamat legkisebb építőeleme, és lehet szkript vagy feladat, amely előre csomagolt szkript. A folyamatokat alkotó fő fogalmakkal és összetevőkkel kapcsolatos további információkért tekintse meg az Azure Pipelines legfontosabb fogalmait.
A folyamat Azure Web App-feladatával üzembe helyezheti az App Service-ben. Összetettebb forgatókönyvek esetén, például az XML-paraméterek üzembe helyezésekor használhatja az Azure App Service üzembe helyezési feladatát.
Előfeltételek
Egy működő Azure App Service-alkalmazás, amely a GitHubon vagy az Azure Reposon futtatott kóddal rendelkezik. Mintaalkalmazás létrehozásához az alábbi rövid útmutatók bármelyikét használhatja:
- ASP.NET Core: ASP.NET Core-webalkalmazás létrehozása az Azure-ban
- ASP.NET: ASP.NET Framework-webalkalmazás létrehozása az Azure-ban
- JavaScript: Node.js-webalkalmazás létrehozása az Azure App Service-ben
- Java: Java-alkalmazás létrehozása az Azure App Service-ben
- Python: Python-alkalmazás létrehozása az Azure App Service-ben
Egy Azure DevOps-szervezet, amely képes folyamatokat futtatni a Microsoft által üzemeltetett ügynökökön. A párhuzamos feladatok ingyenes szintjét kell igényelnie, vagy párhuzamos feladatokat kell vásárolnia. További információ: Párhuzamos feladatok konfigurálása és fizetése.
Az Azure DevOps-szervezetben létrehozott projekt, amely lehetővé teszi folyamatok és Azure-szolgáltatáskapcsolatok létrehozását és engedélyezését. Projekt létrehozása az Azure DevOps.
Fontos
A GitHub-eljárások során előfordulhat, hogy a rendszer arra kéri, hogy hozzon létre egy GitHub-szolgáltatáskapcsolatot , vagy átirányítsa a GitHubra a bejelentkezéshez, az Azure Pipelines GitHub alkalmazás telepítéséhez, az Azure Pipelines engedélyezéséhez vagy a GitHub-szervezetek hitelesítéséhez. Kövesse a képernyőn megjelenő utasításokat a szükséges folyamatok elvégzéséhez. További információ: Hozzáférés a GitHub-adattárakhoz.
Folyamat létrehozása
Az ebben a szakaszban szereplő példakódok egy ASP.NET Core-webalkalmazáshoz tartoznak. Más keretrendszerek utasításait is módosíthatja. Az Azure Pipelines-ökoszisztéma támogatásával kapcsolatos további információkért tekintse meg az Azure Pipelines ökoszisztémájának példáit.
Folyamat definiálásához hozzon létre egy azure-pipelines.yml YAML-fájlt a kódtárban.
- Az Azure DevOps-projekt bal oldali navigációs menüjében válassza a Folyamatok lehetőséget.
- A Folyamatok lapon válassza az Új folyamat vagy a Folyamat létrehozása lehetőséget, ha ez a folyamat az első a projektben.
- A Hol van a kód képernyőjén válassza ki a forráskód helyét az Azure Repos Git vagy a GitHub esetében. Ha szükséges, jelentkezzen be a GitHubra.
- Az Adattár kiválasztása képernyőn válassza ki a kódtárat.
- A Folyamatvonal konfigurálása képernyőn válassza a Kezdő folyamatvonalat.
Adja hozzá a .NET Core (DotNetCoreCLI@2) feladatot a folyamathoz, majd hozza létre és tegye közzé az alkalmazást.
- A folyamat YAML-jének áttekintése képernyőn törölje az összes kódot a
steps:sor után. - Válassza ki a fájl végét, majd a jobb oldalon válassza az Asszisztens megjelenítése lehetőséget.
- A Feladatok területen válassza a .NET Core lehetőséget.
- A .NET Core konfigurációs képernyőjén, az Azure Resource Manager-kapcsolat alatt válassza ki az Azure-előfizetését, majd válassza az Engedélyezés lehetőséget a szükséges szolgáltatáskapcsolat létrehozásához.
- A Parancs alatt válassza a Közzététel lehetőséget.
- Győződjön meg arról, hogy a Webes projektek közzététele és a Zip által közzétett projektek jelölőnégyzet be van jelölve, majd válassza a Hozzáadás lehetőséget.
- A feladat megjelenik a YAML-folyamatban. Tekintse át a YAML-kódot, hogy lássa, mit csinál. Ha elkészült, válassza a Mentés és futtatás, majd a Mentés és futtatás lehetőséget.
- A Build összegzése képernyőn a Feladatok csoportban válassza a szükséges engedély hivatkozását. Az Ellenőrzések képernyőn válassza az Engedélyezés lehetőséget, majd válassza ismét az Engedélyezés lehetőséget . Az engedély megadása lehetővé teszi a folyamat összes futtatásához engedélyezett szolgáltatáskapcsolat használatát.
A folyamat azure-összetevőként közzéteszi az üzembehelyezési ZIP-fájlt a következő lépésben használni kívánt üzembe helyezési feladathoz.
Az üzembe helyezési feladat hozzáadása
A folyamat sikeres futtatása után adja hozzá az üzembe helyezési feladatot.
- A folyamatfuttatás összegzési képernyőjén kattintson a jobb felső sarokban található További műveletek ikonra, majd válassza a Folyamat szerkesztése lehetőséget.
- Jelölje ki a YAML-fájl végét, és válassza az Asszisztens megjelenítése lehetőséget, ha a Feladatok lista nem jelenik meg.
- A Feladatok listában keresse meg és válassza ki az Azure Web App-feladatot . Másik lehetőségként használhatja az Azure App Service üzembe helyezési feladatát.
- Az Azure Web App konfigurációs képernyőjén, az Azure-előfizetés alatt válassza ki ugyanazt a szolgáltatáskapcsolatot, amit az előző lépéshez beállított. Nem kell újraauthorizálnia ezt a kapcsolatot.
- Az alkalmazástípushoz válassza az Azure Web Appot Linuxon vagy az Azure Web Appot Windows rendszeren, a kódtól függően.
- Alkalmazásnévként válassza ki vagy adja meg az App Service-alkalmazás nevét.
- Válassza a Hozzáadás lehetőséget.
- Válassza az Ellenőrzés és mentés, majd a Mentés lehetőséget.
- Válassza a Futtatás lehetőséget, majd válassza ismét a Futtatás lehetőséget .
A teljes YAML-folyamatnak a következő kódhoz hasonlóan kell kinéznie:
trigger:
- <branch-specification>
pool:
vmImage: <agent-specification>
steps:
- task: DotNetCoreCLI@2
inputs:
azureSubscription: '<your-authorized-service-connection>'
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<your-authorized-service-connection>'
appType: 'webApp'
appName: '<your-app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
deploymentMethod: 'auto'
-
azureSubscription: Az Azure-előfizetéshez engedélyezett szolgáltatáskapcsolat neve. -
appName: A meglévő alkalmazás neve. -
package: Az App Service-tartalmat tartalmazó csomag vagy mappa elérési útja. A helyettesítő karaktereket támogatják.
Példák
Az alábbi szakaszok a különböző buildelési és kiadási folyamatok létrehozását ismertetik.
Üzembe helyezés virtuális alkalmazásban
Az Azure Web App-feladat az Azure-webalkalmazás gyökéralkalmazásában lesz üzembe helyezve. Egy adott virtuális alkalmazásba az VirtualApplicationAzure App Service üzembe helyezési feladatának tulajdonságával helyezhet üzembe.
- task: AzureRmWebAppDeployment@5
inputs:
VirtualApplication: '<name of virtual application>'
VirtualApplication az Azure Portalon konfigurált virtuális alkalmazás neve. További információ: App Service-alkalmazás konfigurálása az Azure Portalon.
Üzembe helyezés egy ponton
Az alábbi példa bemutatja, hogyan lehet telepíteni egy átmeneti helyre, majd cserélni egy éles helyre.
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
appName: '<app-name>'
deployToSlotOrASE: true
resourceGroupName: '<name of resource group>'
slotName: staging
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: '<service-connection-name>'
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscription: Az Azure-szolgáltatáskapcsolat. -
appType: Nem kötelező alkalmazástípus, példáulwebAppLinuxlinuxos webalkalmazásban való üzembe helyezés. -
appName: A meglévő alkalmazás neve. -
deployToSlotOrASE:Logikai. Üzembe helyezés meglévő üzembehelyezési ponton vagy App Service-környezetben. -
resourceGroupName: A központilag üzembe helyezendő erőforráscsoport neve, hadeployToSlotOrASEigaz, kötelező megadni. -
slotName: A üzembe helyezendő pont neve, hadeployToSlotOrASEigaz, kötelező megadni. Alapértelmezett érték:production. -
package: Az alkalmazás tartalmát tartalmazó csomag vagy mappa elérési útja. A helyettesítő karaktereket támogatják. -
SourceSlot: ASwapWithProductionigaz volta esetén kerül gyártásba. -
SwapWithProduction:Logikai. A forráshely forgalmának felcserélése az éles környezettel.
Üzembe helyezés több webalkalmazásban
A YAML-fájlban lévő feladatok használatával üzembe helyezési folyamatokat állíthat be. A feladatok használatával több webalkalmazás üzembe helyezésének sorrendjét is szabályozhatja.
jobs:
- job: buildandtest
pool:
vmImage: ubuntu-latest
steps:
# publish an artifact called drop
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
# deploy to Azure Web App staging
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<staging-app-name>'
deployToSlotOrASE: true
resourceGroupName: <group-name>
slotName: 'staging'
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- job: deploy
dependsOn: buildandtest
condition: succeeded()
pool:
vmImage: ubuntu-latest
steps:
# download the artifact drop from the previous job
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'drop'
path: '$(Pipeline.Workspace)'
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<production-app-name>'
resourceGroupName: <group-name>
package: '$(Pipeline.Workspace)/**/*.zip'
Feltételes üzembe helyezés
A feltételes üzembe helyezés a YAML-ben az alábbi technikák egyikével telepíthető:
- Adjon hozzá egy feltételt a lépéshez.
- Elkülönítheti az üzembe helyezés lépéseit egy külön feladatba, és hozzáadhat egy feltételt ehhez a feladathoz.
Az alábbi példa bemutatja, hogyan lehet lépésfeltételeket használni csak a fő ágból származó sikeres buildek üzembe helyezéséhez:
- task: AzureWebApp@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<service-connection-name>'
appName: '<app-name>'
A feltételekről további információt a Feltételek megadása című témakörben talál.
Üzembe helyezés webes üzembe helyezéssel
Az Azure App Service üzembe helyezési feladata a Web Deploy használatával telepíthető az App Service-ben.
trigger:
- main
pool:
vmImage: windows-latest
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
arguments: '--configuration $(buildConfiguration)'
zipAfterPublish: true
- task: AzureRmWebAppDeployment@5
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-connection-name>'
appType: 'webApp'
WebAppName: '<app-name>'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
enableCustomDeployment: true
DeploymentType: 'webDeploy'
Gyakori kérdések
Mi a különbség az AzureWebApp és az AzureRmWebAppDeployment feladatok között?
Az Azure Web App-feladat a legegyszerűbb módja annak, hogy üzembe helyezhető egy Azure-webalkalmazásban. Alapértelmezés szerint a gyökéralkalmazást az Azure-webalkalmazásban helyezi üzembe.
Az Azure App Service üzembe helyezési feladata több egyéni forgatókönyvet is képes kezelni, például:
- Üzembe helyezés a Web Deploy használatával, ha általában az Internet Information Services (IIS) üzembehelyezési folyamatát használja.
- Üzembe helyezés virtuális alkalmazásokban.
- Üzembe helyezés más alkalmazástípusokban, például tárolóalkalmazásokban, függvényalkalmazásokban, WebJobs-alkalmazásokban vagy API- és mobilalkalmazásokban.
Feljegyzés
A különálló fájlátalakítási feladat támogatja az Azure Pipelinesban használható fájlátalakításokat és változóhelyettesítéseket is. A Fájlátalakítás feladat használatával fájlátalakításokat és változóhelyettesítéseket alkalmazhat bármilyen konfigurációs és paraméterfájlra.
Miért kapom meg az "Érvénytelen App Service-csomag vagy mappa elérési útja" üzenetet?
A YAML-folyamatokban előfordulhat, hogy a rendszer nem egyezik a beépített webcsomag mentési helye és az üzembe helyezési feladat keresése között. Az alapértelmezett AzureWebApp-feladat felveszi a webcsomagot az üzembe helyezéshez.$(System.DefaultWorkingDirectory)/**/*.zip Ha a webcsomagot máshol helyezik el, módosítsa a package paraméter értékét.
Miért jelenik meg a "Webdeploy-beállításokat használó közzététel csak Windows-ügynök használata esetén támogatott" üzenet?
Ez a hiba az AzureRmWebAppDeployment feladatban fordul elő, amikor a feladatot a Web Deploy használatával történő üzembe helyezésre konfigurálja, de az ügynök nem windowsos. Ellenőrizze, hogy a YAML-paraméter vmImage megadja-e a Windowst.
pool:
vmImage: windows-latest
Miért nem működik a Web Deploy, ha letiltom az alapszintű hitelesítést?
A Microsoft Entra ID-hitelesítés Azure App Service-beli üzembe helyezési feladattal való együttműködésével kapcsolatos hibaelhárítási információkért tekintse meg a Windows-ügynökömBől származó Microsoft Entra ID-hitelesítéssel történő webes üzembe helyezést az Azure App Service-ben.