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 az Azure Functionst. 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.

Ezt a feladatot fogja használni az AzureFunctionApp Azure Functionsben való üzembe helyezéshez. Az AzureFunctionApp-feladatnak már két verziója van (AzureFunctionApp@1, AzureFunctionApp@2). AzureFunctionApp@2 továbbfejlesztett érvényesítési támogatást tartalmaz, amely miatt a folyamatok kisebb valószínűséggel hiúsulnak meg a hibák miatt.

Válassza ki a feladat verzióját a cikk tetején. A YAML-folyamatok nem érhetők el az Azure DevOps 2019-es és korábbi verzióihoz.

Előfeltételek

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 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:
- script: |
    dotnet restore
    dotnet build --configuration Release
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    arguments: '--configuration Release --output publish_output'
    projects: '*.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-függvényalkalmazás üzembe helyezési feladatával 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.

Az Azure Functionsben való üzembe helyezéshez adja hozzá a következő kódrészletet a azure-pipelines.yml fájl végén. Az alapértelmezett appType a Windows. A Linuxot a következőre állítva appType functionAppLinuxadhatja meg. Az AzureFunctionApp-feladat nem támogatja a rugalmas használatú @v1 alkalmazásokban való üzembe helyezést.

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: AzureFunctionApp@1 # Add this at the end of your file
  inputs:
    azureSubscription: <Azure service connection>
    appType: functionAppLinux # default is functionApp
    appName: $(appName)
    package: $(System.ArtifactsDirectory)/**/*.zip
    #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 Name>'
    #slotName: '<Slot name>'

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.

Tároló üzembe helyezése

Minden sikeres buildelés után automatikusan üzembe helyezheti a kódot tárolóalapú függvényalkalmazásként. A tárolókról további információt a tárolók és az Azure Functions használata című témakörben talál.

A tárolón való üzembe helyezés legegyszerűbb módja az Azure Function App on Container Deploy feladat használata.

Az üzembe helyezéshez adja hozzá a következő kódrészletet a YAML-fájl végén:

trigger:
- main

variables:
  # Container registry service connection established during pipeline creation
  dockerRegistryServiceConnection: <Docker registry service connection>
  imageRepository: <Name of your image repository>
  containerRegistry: <Name of the Azure container registry>
  dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
  tag: '$(Build.BuildId)'

  # Agent VM image name
  vmImageName: 'ubuntu-latest'

- task: AzureFunctionAppContainer@1 # Add this at the end of your file
  inputs:
    azureSubscription: '<Azure service connection>'
    appName: '<Name of the function app>'
    imageName: $(containerRegistry)/$(imageRepository):$(tag)

A kódrészlet leküldi a Docker-rendszerképet az Azure Container Registrybe. Az Azure Function App on Container Deploy feladat lekéri a megadott adattárnak megfelelő BuildId Docker-rendszerképet, majd telepíti a lemezképet.

A teljes körű folyamatra vonatkozó példa, beleértve a tároló kiépítését és a tárolóregisztrációs adatbázisban való közzétételt, tekintse meg ezt az Azure Pipelines-tároló üzembehelyezési példáját.

Üzembe helyezés egy ponton

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

Folyamat létrehozása az Azure CLI-vel

Buildelési folyamat azure-beli létrehozásához használja a az functionapp devops-pipeline create parancsot. 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.

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:
- script: |
    dotnet restore
    dotnet build --configuration Release
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    arguments: '--configuration Release --output publish_output'
    projects: '*.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.

A feladat v2-es verziója támogatja a .NET, a Python és a Node újabb alkalmazásveremeit. A feladat magában foglalja a hálózatkezelési előzetes üzembe helyezési ellenőrzéseket. Ha előre üzembe helyezési problémák merülnek fel, az üzembe helyezés leáll.

Az Azure Functionsben való üzembe helyezéshez adja hozzá a következő kódrészletet a azure-pipelines.yml fájl végén. Az alapértelmezett appType a Windows. A Linuxot a következőre állítva appType functionAppLinuxadhatja meg. A Rugalmas kihasználtságú alkalmazásokban való üzembe helyezéshez be kell állítania mind appType: functionAppLinux a isFlexConsumption: true.

trigger:
- main

variables:
  # Azure service connection established during pipeline creation
  azureSubscription: <SUBSCRIPTION_NAME>
  appName: <APP_NAME>
  # Agent VM image name
  vmImageName: 'windows-latest'

- task: AzureFunctionApp@2 # Add this at the end of your file
  inputs:
    azureSubscription: <AZURE_SERVICE_CONNECTION>
    appType: functionApp # this specifies a Windows-based function app
    appName: $(appName)
    package: $(System.ArtifactsDirectory)/**/*.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>'

Következő lépések