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.
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
Egy Azure DevOps-szervezet. Ha még nem rendelkezik fiókkal, ingyen létrehozhat egyet. Ha a csapatának már van ilyenje, győződjön meg arról, hogy Ön a használni kívánt Azure DevOps-projekt rendszergazdája.
Folyamatok futtatásának lehetősége a Microsoft által üzemeltetett ügynökökön. Vásárolhat párhuzamos feladatot , vagy ingyenes szintet kérhet.
Ha az Azure-adattárak helyett a GitHubot szeretné használni, szüksége lesz egy GitHub-adattárra is. Ha nincs GitHub-fiókja, ingyenesen létrehozhat egyet.
Egy meglévő függvényalkalmazás az Azure-ban, amelynek forráskódja egy támogatott adattárban található. Ha még nem rendelkezik Azure Functions-kódprojektel, az alábbi nyelvspecifikus cikk végrehajtásával hozhat létre egyet:
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
- Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.
- A projektben lépjen a Folyamatok lapra. Ezután válassza ki a műveletet egy új folyamat létrehozásához.
- A varázsló lépéseit végigvezetve először válassza ki a GitHubot a forráskód helyeként.
- Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait.
- Amikor megjelenik az adattárak listája, válassza ki a mintaalkalmazás-adattárat.
- 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.
- Ú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'
- Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.
- A projektben lépjen a Folyamatok lapra. Ezután válassza az Új folyamat lehetőséget.
- 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.
- Amikor megjelenik az adattárak listája, válassza ki a mintaalkalmazás-adattárat.
- 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.
- 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.
- Ú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
- Tekintse át az Azure Functions áttekintését.
- Tekintse át az Azure DevOps áttekintését.