Megosztás a következőn keresztül:


Folyamatos teljesítés az Azure Pipelines-szal

Az Azure Pipelines használatával automatikusan üzembe helyezheti a kódprojektet egy függvényalkalmazásban az Azure-ban. Az Azure Pipelines lehetővé teszi a folyamatos integráció (CI) és a folyamatos teljesítés (CD) használatával történő buildelést, tesztelést és üzembe helyezést az Azure DevOps használatával.

A YAML-folyamatok egy YAML-fájllal vannak definiálva az adattárban. A lépés a folyamat legkisebb építőeleme, amely lehet szkript vagy feladat (előre csomagolt szkript). Ismerje meg a folyamatokat alkotó legfontosabb fogalmakat és összetevőket.

Az AzureFunctionApp feladatot használva üzembe helyezheti a kódot. Most már két verziója van a AzureFunctionApp-nek, amelyeket ez a táblázat hasonlít össze:

Összehasonlítás/verzió AzureFunctionApp@2 AzureFunctionApp@1
Támogatja a Rugalmas használat csomagot
Továbbfejlesztett érvényesítési támogatás*
Mikor érdemes használni... Új alkalmazástelepítésekhez ajánlott Régi üzemelő példányok esetén karbantartva

* A továbbfejlesztett érvényesítési támogatás miatt a folyamatok kisebb valószínűséggel hiúsulnak meg hibák miatt.

Válassza ki a feladat verzióját a cikk tetején.

Feljegyzés

Frissítsen az AzureFunctionApp@1 verzióról az AzureFunctionApp@2 verzióra, hogy hozzáférjen az új funkciókhoz és biztosítsa a hosszú távú támogatást.

Előfeltételek

Ne felejtse el feltölteni a helyi kódprojektet a GitHubra vagy az Azure Repos-adattárba, miután közzétette azt a függvényalkalmazásban.

Az alkalmazás fordítása

  1. Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.
  2. A projektben lépjen a Folyamatok lapra. Ezután válassza ki a műveletet egy új folyamat létrehozásához.
  3. A varázsló lépéseit végigvezetve először válassza ki a GitHubot a forráskód helyeként.
  4. Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait.
  5. Amikor megjelenik az adattárak listája, válassza ki a mintaalkalmazás-adattárat.
  6. Az Azure Pipelines elemzi az adattárat, és sablont javasol. Válassza a Mentés és futtatás lehetőséget, majd válassza a Véglegesítés lehetőséget közvetlenül a főágra, majd válassza a Mentés és futtatás lehetőséget.
  7. Új futtatás indul el. Várja meg, amíg a futtatás befejeződik.

Példa YAML-buildfolyamatokra

Az alkalmazások létrehozásához az alábbi nyelvspecifikus folyamatok használhatók.

A következő mintával létrehozhat egy YAML-fájlt egy .NET-alkalmazás létrehozásához:

pool:
  vmImage: 'windows-latest'
steps:
  - task: UseDotNet@2
    displayName: 'Install .NET 8.0 SDK'
    inputs:
      packageType: 'sdk'
      version: '8.0.x'
      installationPath: $(Agent.ToolsDirectory)/dotnet
  - script: |
      dotnet restore
      dotnet build --configuration Release
  - task: DotNetCoreCLI@2
    displayName: 'dotnet publish'
    inputs:
      command: publish
      arguments: '--configuration Release --output $(System.DefaultWorkingDirectory)/publish_output'
      projects: 'csharp/*.csproj'
      publishWebProjects: false
      modifyOutputPath: false
      zipAfterPublish: false
  - task: ArchiveFiles@2
    displayName: "Archive files"
    inputs:
      rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
      includeRootFolder: false
      archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
      artifactName: 'drop'
  1. Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.
  2. A projektben lépjen a Folyamatok lapra. Ezután válassza az Új folyamat lehetőséget.
  3. Válassza ki az alábbi lehetőségek közül a Hol található a kód?:
    • GitHub: Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait. Ha ez a kapcsolat az első GitHub-kapcsolat, a varázsló végigvezeti a DevOps GitHub-fiókokhoz való csatlakoztatásának folyamatán.
    • Azure Repos Git: Azonnal kiválaszthat egy adattárat a jelenlegi DevOps-projektben.
  4. Amikor megjelenik az adattárak listája, válassza ki a mintaalkalmazás-adattárat.
  5. Az Azure Pipelines elemzi az adattárat, a Folyamat konfigurálása területen pedig a lehetséges sablonok listáját találja. Válassza ki a nyelvéhez megfelelő függvényalkalmazás-sablont . Ha nem látja a megfelelő sablont, válassza a Továbbiak megjelenítése lehetőséget.
  6. Válassza a Mentés és futtatás lehetőséget, majd válassza a Véglegesítés lehetőséget közvetlenül a főágra, majd válassza a Mentés és futtatás lehetőséget.
  7. Új futtatás indul el. Várja meg, amíg a futtatás befejeződik.

Példa YAML-buildfolyamatokra

Az alkalmazások létrehozásához az alábbi nyelvspecifikus folyamatok használhatók.

Az alábbi minta segítségével létrehozhat egy YAML-fájlt egy .NET-alkalmazás létrehozásához.

Ha az alkalmazás létrehozásakor hibaüzenet jelenik meg, ellenőrizze, hogy a használt .NET-verzió megegyezik-e az Azure Functions verziójával. További információkért tekintse meg az Azure Functions futtatókörnyezeti verzióinak áttekintését.

pool:
  vmImage: 'windows-latest'
steps:
  - task: UseDotNet@2
    displayName: 'Install .NET 8.0 SDK'
    inputs:
      packageType: 'sdk'
      version: '8.0.x'
      installationPath: $(Agent.ToolsDirectory)/dotnet
  - script: |
      dotnet restore
      dotnet build --configuration Release
  - task: DotNetCoreCLI@2
    displayName: 'dotnet publish'
    inputs:
      command: publish
      arguments: '--configuration Release --output $(System.DefaultWorkingDirectory)/publish_output'
      projects: 'csharp/*.csproj'
      publishWebProjects: false
      modifyOutputPath: false
      zipAfterPublish: false
  - task: ArchiveFiles@2
    displayName: "Archive files"
    inputs:
      rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
      includeRootFolder: false
      archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
      artifactName: 'drop'

Az alkalmazás üzembe helyezése

Az Azure Function App Deploy v2 feladattal fog üzembe helyezni. Ehhez a feladathoz bemenetként Azure-szolgáltatáskapcsolat szükséges. Egy Azure-szolgáltatáskapcsolat tárolja az Azure Pipelinesból az Azure-ba való csatlakozáshoz szükséges hitelesítő adatokat. Olyan kapcsolatot kell létrehoznia, amely számítási feladatok identitás-összevonását használja.

Az Azure Functionsben való üzembe helyezéshez adja hozzá ezt a kódrészletet a azure-pipelines.yml fájl végén attól függően, hogy az alkalmazás Linuxon vagy Windowson fut-e:

trigger:
- main

variables:
  # Azure service connection established during pipeline creation
  azureSubscription: <Name of your Azure subscription>
  appName: <Name of the function app>
  # Agent VM image name
  vmImageName: 'windows-latest'

- task: AzureFunctionApp@2 # Add this at the end of your file
  inputs:
    azureSubscription: <Name of your Azure subscription>
    appType: functionApp # this specifies a Windows-based function app
    appName: $(appName)
    package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
    deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
    #Uncomment the next lines to deploy to a deployment slot
    #Note that deployment slots is not supported for Linux Dynamic SKU
    #deployToSlotOrASE: true
    #resourceGroupName: '<RESOURCE_GROUP>'
    #slotName: '<SLOT_NAME>'

Az alapértelmezett appType a Windows (functionApp). A Linuxot a következőre állítva appTypefunctionAppLinuxadhatja meg. A Flex Consumption alkalmazás Linuxon fut, és mindkettőt be kell állítania: appType: functionAppLinux és isFlexConsumption: true.

A kódrészlet feltételezi, hogy a YAML-fájl buildelési lépései létrehozták a zip archívumot az $(System.ArtifactsDirectory) ügynök mappájában.

Az Üzembe helyezés az Azure Függvényalkalmazás üzembe helyezési feladatával történik. Ehhez a feladathoz bemenetként Azure-szolgáltatáskapcsolat szükséges. Egy Azure-szolgáltatáskapcsolat tárolja az Azure Pipelinesból az Azure-ba való csatlakozáshoz szükséges hitelesítő adatokat.

Fontos

A Rugalmas kihasználtságú alkalmazásban való üzembe helyezés nem támogatott a @v1 feladat AzureFunctionApp használatával.

Az Azure Functionsben való üzembe helyezéshez adja hozzá ezt a kódrészletet a azure-pipelines.yml fájl végén:

trigger:
- main

variables:
  # Azure service connection established during pipeline creation
  azureSubscription: <Name of your Azure subscription>
  appName: <Name of the function app>
  # Agent VM image name
  vmImageName: 'ubuntu-latest'

- task: DownloadBuildArtifacts@1 # Add this at the end of your file
  inputs:
    buildType: 'current'
    downloadType: 'single'
    artifactName: 'drop'
    itemPattern: '**/*.zip'
    downloadPath: '$(System.ArtifactsDirectory)'
- task: AzureFunctionApp@1
  inputs:
    azureSubscription: $(azureSubscription)
    appType: functionAppLinux # default is functionApp
    appName: $(appName)
    package: $(System.ArtifactsDirectory)/**/*.zip

Ez a kódrészlet beállítja a appType és a functionAppLinux értékeket, ami szükséges, amikor egy Linuxon futó alkalmazásba történik a telepítés. Az alapértelmezett appType a Windows (functionApp).

A példa feltételezi, hogy a YAML-fájl buildelési lépései létrehozták a zip archívumot az $(System.ArtifactsDirectory) ügynök mappájában.

Tároló üzembe helyezése

Jótanács

Javasoljuk, hogy az Azure Functions-támogatást az Azure Container Appsben használja a függvényalkalmazás egyéni Linux-tárolóban való üzemeltetéséhez. További információ: Azure Functions az Azure Container Appsben – áttekintés.

Tárolóalapú függvényalkalmazás üzembe helyezésekor a használt üzembe helyezési feladat az adott üzemeltetési környezettől függ.

Az Azure Container Apps Üzembe helyezési feladatával (AzureContainerApps) üzembe helyezhet egy függvényalkalmazás rendszerképét egy Azure Functionsre optimalizált Azure Container App-példányon.

Ez a kód telepíti az alaprendszerképet egy .NET 8 izolált folyamatmodell-függvényalkalmazáshoz:

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureContainerApps@1
  inputs:
    azureSubscription: <Name of your Azure subscription>
    imageToDeploy: 'mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0'
    containerAppName: <Name of your container app>
    resourceGroup: <Name of the resource group>

Ideális esetben az alaprendszerkép használata helyett saját egyéni tárolót kell létrehoznia a folyamatban, ahogyan az ebben a példában is látható. További információkért lásd: Üzembe helyezés az Azure Pipelines-ből az Azure Container Apps-be.

Üzembe helyezés egy ponton

Fontos

A Rugalmas fogyasztási terv jelenleg nem támogatja a slotokat. A Linux-alkalmazások nem támogatják a tárolóhelyeket, ha használatalapú csomagban futnak, és ezeknek az alkalmazásoknak a támogatása a jövőben megszűnik.

trigger:
- main

variables:
  # Azure service connection established during pipeline creation
  azureSubscription: <Name of your Azure subscription>
  appName: <Name of the function app>
  # Agent VM image name
  vmImageName: 'windows-latest'

- task: AzureFunctionApp@2 # Add this at the end of your file
  inputs:
    azureSubscription: <Name of your Azure subscription>
    appType: functionApp # this specifies a Windows-based function app
    appName: $(appName)
    package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
    deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
    deployToSlotOrASE: true
    resourceGroupName: '<RESOURCE_GROUP>'
    slotName: '<SLOT_NAME>'

A függvényalkalmazást több tárolóhelyre is konfigurálhatja. A pontok lehetővé teszik az alkalmazás biztonságos üzembe helyezését és tesztelését, mielőtt elérhetővé tenné az ügyfelek számára.

Az alábbi YAML-kódrészlet bemutatja, hogyan lehet üzembe helyezni egy előkészítési ponton, majd felcserélni egy éles pontra:

- task: AzureFunctionApp@1
  inputs:
    azureSubscription: <Azure service connection>
    appType: functionAppLinux
    appName: <Name of the function app>
    package: $(System.ArtifactsDirectory)/**/*.zip
    deployToSlotOrASE: true
    resourceGroupName: <Name of the resource group>
    slotName: staging

- task: AzureAppServiceManage@0
  inputs:
    azureSubscription: <Azure service connection>
    WebAppName: <name of the function app>
    ResourceGroupName: <name of resource group>
    SourceSlot: staging
    SwapWithProduction: true

Üzembehelyezési pontok használata esetén a következő feladatot is hozzáadhatja egy pontcserélés végrehajtásához az üzembe helyezés részeként.

- task: AzureAppServiceManage@0
  inputs:
    azureSubscription: <AZURE_SERVICE_CONNECTION>
    WebAppName: <APP_NAME>
    ResourceGroupName: <RESOURCE_GROUP>
    SourceSlot: <SLOT_NAME>
    SwapWithProduction: true

Folyamat létrehozása az Azure CLI-vel

Buildelési folyamat azure-beli létrehozásához használja a az functionapp devops-pipeline createparancsot. A buildelési folyamat az adattárban végrehajtott kódmódosítások létrehozásához és kiadásához jön létre. A parancs létrehoz egy új YAML-fájlt, amely meghatározza a buildelési és kiadási folyamatot, majd véglegesíti azt az adattárban. A parancs előfeltételei a kód helyétől függenek.

  • Ha a kód a GitHubon található:

    • Az előfizetéshez írási engedélyekkel kell rendelkeznie.

    • Az Azure DevOps projektadminisztrátorának kell lennie.

    • Rendelkeznie kell a megfelelő engedélyekkel rendelkező GitHub személyes hozzáférési jogkivonat (PAT) létrehozásához szükséges engedélyekkel. További információ: GitHub PAT engedélykövetelményei.

    • A GitHub-adattár fő ágának véglegesítéséhez engedélyekkel kell rendelkeznie az automatikusan létrehozott YAML-fájl véglegesítéséhez.

  • Ha a kód az Azure-adattárakban található:

    • Az előfizetéshez írási engedélyekkel kell rendelkeznie.

    • Az Azure DevOps projektadminisztrátorának kell lennie.

Következő lépések