Megosztás:


Üzembe helyezés az Azure App Service-ben az Azure Pipelines használatával

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

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.

  1. Az Azure DevOps-projekt bal oldali navigációs menüjében válassza a Folyamatok lehetőséget.
  2. 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.
  3. 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.
  4. Az Adattár kiválasztása képernyőn válassza ki a kódtárat.
  5. 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.

  1. A folyamat YAML-jének áttekintése képernyőn törölje az összes kódot a steps: sor után.
  2. Válassza ki a fájl végét, majd a jobb oldalon válassza az Asszisztens megjelenítése lehetőséget.
  3. A Feladatok területen válassza a .NET Core lehetőséget.
  4. 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.
  5. A Parancs alatt válassza a Közzététel lehetőséget.
  6. 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.
  7. 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.
  8. 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Alkalmazásnévként válassza ki vagy adja meg az App Service-alkalmazás nevét.
  7. Válassza a Hozzáadás lehetőséget.
  8. Válassza az Ellenőrzés és mentés, majd a Mentés lehetőséget.
  9. 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ául webAppLinux linuxos 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, ha deployToSlotOrASE igaz, kötelező megadni.
  • slotName: A üzembe helyezendő pont neve, ha deployToSlotOrASE igaz, 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: A SwapWithProduction igaz 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:

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.