AzureFunctionApp@2 – Azure Functions Distribuera v2-uppgift

Uppdatera en funktionsapp med .NET, Python, JavaScript, PowerShell, Java-baserade webbprogram.

Syntax

# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    appName: # string. Required. Azure Functions App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # 'DOTNET|6.0' | 'DOTNET-ISOLATED|6.0' | 'DOTNET-ISOLATED|7.0' | 'DOTNET-ISOLATED|8.0' | 'JAVA|8' | 'JAVA|11' | 'JAVA|17' | 'JAVA|21' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'NODE|20' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10' | 'PYTHON|3.11'. Optional. Use when appType = functionAppLinux. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
  inputs:
    connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection. 
    appType: # 'functionApp' | 'functionAppLinux'. Required. App type. 
    appName: # string. Required. Azure Functions App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # 'DOTNET|2.2' | 'DOTNET|3.1' | 'DOTNET|6.0' | 'DOTNET-ISOLATED|7.0' | 'JAVA|8' | 'JAVA|11' | 'NODE|8' | 'NODE|10' | 'NODE|12' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'PYTHON|3.6' | 'PYTHON|3.7' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10'. Optional. Use when appType = functionAppLinux. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.

Indata

connectedServiceNameARM - Azure Resource Manager-anslutning
Indataalias: azureSubscription. string. Krävs.

Välj Azure Resource Manager-prenumerationen för distributionen.


appType - Apptyp
string. Krävs. Tillåtna värden: functionApp (Funktionsapp i Windows) functionAppLinux (Funktionsapp i Linux).

Välj azure-funktionsapptypen för distributionen.


appName - Azure Functions Appnamn
string. Krävs.

Ange namnet på en befintlig Azure Functions App. Funktionsapparna i listan baseras på den valda apptypen.


deployToSlotOrASE - Distribuera till fack eller App Service-miljön
boolean. Valfritt. Använd när appType != "". Standardvärde: false.

Distribuerar till ett befintligt distributionsfack eller Azure App Service Environment. För båda målen behöver aktiviteten ett resursgruppnamn.

Om distributionsmålet är ett fack är det som standard produktionsplatsen . Alla andra befintliga facknamn kan också anges.

Om distributionsmålet är en Azure App Service Miljö lämnar du platsnamnet som produktion och anger namnet på resursgruppen.


resourceGroupName - Resursgrupp
string. Krävs när deployToSlotOrASE = true.

Namnet på resursgruppen krävs när distributionsmålet antingen är ett distributionsfack eller en App Service-miljön.

Anger eller väljer den Azure-resursgrupp som innehåller Azure App Service som anges ovan.


slotName - Slot
string. Krävs när deployToSlotOrASE = true. Standardvärde: production.

Anger eller väljer ett befintligt fack, exklusive produktionsplatsen.


slotName - Slot
string. Krävs när deployToSlotOrASE = true. Standardvärde: production.

Ange eller välj en annan plats än produktionsplatsen.


package - Paket eller mapp
string. Krävs. Standardvärde: $(System.DefaultWorkingDirectory)/**/*.zip.

Filsökvägen till paketet eller mappen som innehåller App Service innehåll som genereras av MSBuild eller en komprimerad zip-fil. Variabler (build release | ) och jokertecken stöds. Till exempel $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - Körningsstack
string. Valfritt. Använd när appType = functionAppLinux. Tillåtna värden: DOTNET|6.0, DOTNET-ISOLATED|6.0, DOTNET-ISOLATED|7.0, DOTNET-ISOLATED|8.0, JAVA|8, JAVA|11, JAVA|21JAVA|17, NODE|14, NODE|16, NODE|18, NODE|20, PYTHON|3.8, PYTHON|3.9, PYTHON|3.10. PYTHON|3.11

Ange det ramverk och den version som funktionsappen ska köras på. Du kan använda någon av de körningsversioner som stöds. Gamla värden som DOCKER|microsoft/azure-functions-* är inaktuella. Nya värden visas i listrutan i assistent. Om det finns en nyare version av ett ramverk som är tillgängligt i de körningsversioner som stöds kan du ange det även om det inte finns i listan.


runtimeStack - Körningsstack
string. Valfritt. Använd när appType = functionAppLinux. Tillåtna värden: DOTNET|2.2 (DOTNET|2.2 (functionapp v2)), DOTNET|3.1 (DOTNET|3.1 (functionapp v3)), DOTNET|6.0 (DOTNET|6.0 (functionapp v4)), DOTNET-ISOLATED|7.0 (DOTNET-ISOLATED|7.0 (functionapp v4)), JAVA|8 (JAVA|8 (functionapp v2/v3/v4)), JAVA|11 (JAVA|11 (functionapp v3/v4)), NODE|8 (NODE|8 (functionapp v2)), NODE|10 (NODE|10 (functionapp v2/v3)), NODE|12 (NODE|12 (functionapp v3)), NODE|14 (NODE|14 (functionapp v3/v4)), NODE|16 (NODE|16 (functionapp v4)), NODE|18 (NODE|18 (functionapp v4)), PYTHON|3.6 (PYTHON|3.6 (functionapp v2/v3)), PYTHON|3.7 (PYTHON|3.7 (functionapp v2/v3/v4)), PYTHON|3.8 (PYTHON|3.8 (functionapp v3/v4)), PYTHON|3.9 (PYTHON|3.9 (functionapp v3/v4)), PYTHON|3.10 (PYTHON|3.10 (functionapp v3/v4)).

Ange det ramverk och den version som funktionsappen ska köras på. Du kan använda någon av de körningsversioner som stöds. Gamla värden som DOCKER|microsoft/azure-functions-* är inaktuella. Nya värden visas i listrutan i assistent. Om det finns en nyare version av ett ramverk som är tillgängligt i de körningsversioner som stöds kan du ange det även om det inte finns i listan.


appSettings - Appinställningar
string.

Ange programinställningarna med hjälp av syntaxen -key value (till exempel:-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Omsluta värden som innehåller blanksteg med dubbla citattecken (till exempel: "Eastern Standard Time").


deploymentMethod - Distributionsmetod
string. Krävs när appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Tillåtna värden: auto (Identifiera automatiskt), zipDeploy (Zip Deploy) runFromPackage (Zip Deploy with Run From Package). Standardvärde: auto.

Väljer distributionsmetod för appen. Linux-förbrukningsappar stöder inte den här konfigurationen.


deploymentMethod - Distributionsmetod
string. Krävs när appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Tillåtna värden: auto (Identifiera automatiskt), zipDeploy (Zip Deploy) runFromPackage (Zip Deploy with Run From Package). Standardvärde: auto.

Väljer distributionsmetod för appen. Linux-förbrukningsappar stöder inte den här konfigurationen.s


Kontrollalternativ för aktivitet

Alla aktiviteter har kontrollalternativ utöver sina aktivitetsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.

Utdatavariabler

Den här uppgiften definierar följande utdatavariabler, som du kan använda i underordnade steg, jobb och steg.

AppServiceApplicationUrl
Program-URL för den valda Azure-funktionsappen.

Kommentarer

Azure Function Deployment-uppgiften används för att uppdatera Azure Functions för att distribuera Functions till Azure. Uppgiften fungerar på plattformsoberoende Azure Pipelines-agenter som kör Windows, Linux eller Mac och använder underliggande distributionstekniker för RunFromPackage, Zip Deploy och Kudu REST API:er.

Uppgiften fungerar för de Azure Functions språk som stöds.

Förutsättningar för uppgiften

Följande förutsättningar måste konfigureras på måldatorerna för att uppgiften ska fungera korrekt.

Azure-funktion

Uppgiften används för att distribuera ett Azure Functions projekt till en befintlig Azure-funktion. Azure-funktionsappen bör finnas innan aktiviteten körs. Azure-funktionsappen kan skapas från Azure Portal. Du kan också använda Azure PowerShell-uppgiften för att köra AzureRM PowerShell-skript för att etablera och konfigurera Azure-funktionsappen.

Uppgiften kan användas för att distribuera Azure Functions (Windows/Linux).

Azure Subscription (Azure-prenumeration)

För att distribuera till Azure måste en Azure-prenumeration länkas till Azure Pipelines med hjälp av fliken Tjänster i avsnittet Kontoadministration. Lägg till den Azure-prenumeration som ska användas i definitionen Skapa eller Versionshantering genom att öppna skärmen Kontoadministration (kugghjulsikonen längst upp till höger på skärmen) och klicka sedan på fliken Tjänster.

Skapa ARM-tjänstslutpunkten och använd Azure Resource Manager slutpunktstyp. Om du vill ha mer information följer du stegen i länken här.

Uppgiften fungerar inte med den klassiska Azure-tjänstslutpunkten och de här anslutningarna visas inte i parametrarna i aktiviteten.

Distributionsmetoder

Flera distributionsmetoder är tillgängliga i den här uppgiften.

Om du vill ändra det paketbaserade distributionsalternativet i en designeruppgift expanderar du Ytterligare distributionsalternativ och aktiverar Välj distributionsmetod.

Baserat på typen av Azure App Service och Azure Pipelines-agenten använder uppgiften en lämplig distributionsteknik. De distributionstekniker som används av uppgifter är följande:

Som standard försöker uppgiften välja lämplig distributionsteknik baserat på indatapaketet, App Service typ och agentoperativsystem.

  • Om du har angett ett skript efter distributionen använder du Zip Deploy.
  • Om den App Service typen är Web App on Linux använder du Zip Deploy.
  • Om en .war-fil tillhandahålls använder du War Deploy.
  • Om det finns en .jar fil använder du Run-From-Zip.
  • För alla andra uppgifter använder du Kör från paket (via Zip Deploy).

På en icke-Windows-agent (för alla App Service typen) förlitar sig uppgiften på Kudu REST API för att distribuera webbappen.

Kudu REST API

Kudu REST API fungerar på både Windows- och Linux-automatiseringsagenter när målet är en webbapp i Windows, en webbapp på Linux (inbyggd källa) eller en funktionsapp. Uppgiften använder Kudu för att kopiera filer till Azure App Service.

Zip-distribution

Zip Deploy skapar ett .zip distributionspaket från det valda paketet eller mappen. Sedan distribueras filinnehållet till mappen wwwroot i App Service namnfunktionsappen i Azure. Det här alternativet skriver över allt befintligt innehåll i mappen wwwroot. Mer information finns i Zip-distribution för Azure Functions.

Kör från paketet

Kör från paket skapar samma distributionspaket som Zip Deploy. I stället för att distribuera filer till wwwroot-mappen monterar Functions-körningen hela paketet. När du använder det här alternativet blir filer i mappen wwwroot skrivskyddade. Mer information finns i Kör dina Azure-funktioner från en paketfil.

Felsökning

Fel: Det gick inte att hämta åtkomsttoken för Azure. Kontrollera om tjänstens huvudnamn som används är giltigt och inte har upphört att gälla.

Uppgiften använder tjänstens huvudnamn i tjänstanslutningen för att autentisera med Azure. Om tjänstens huvudnamn har upphört att gälla eller inte har behörighet till App Service misslyckas uppgiften med det här felet. Kontrollera giltigheten för tjänstens huvudnamn som används och att det finns i appregistreringen. Mer information finns i Använda rollbaserad åtkomstkontroll för att hantera åtkomsten till dina Azure-prenumerationsresurser. Det här blogginlägget innehåller också mer information om hur du använder autentisering med tjänstens huvudnamn.

SSL-fel

Om du vill använda ett certifikat i App Service måste certifikatet signeras av en betrodd certifikatutfärdare. Om din webbapp visar fel i certifikatverifieringen, använder du förmodligen ett självsignerat certifikat. Ange en variabel med namnet VSTS_ARM_REST_IGNORE_SSL_ERRORS till värdet true i bygg- eller versionspipelinen för att lösa felet.

En version hänger sig en längre stund och misslyckas sedan

Det här problemet kan bero på otillräcklig kapacitet i din App Service plan. För att lösa det här problemet kan du skala upp App Service-instansen för att öka den tillgängliga processorn, RAM-minnet och diskutrymmet eller prova med en annan App Service plan.

5xx felkoder

Om du ser ett 5xx-felkontrollerar du statusen för din Azure-tjänst.

Azure-funktionen slutade plötsligt fungera

Azure Functions kan plötsligt sluta fungera om mer än ett år har gått sedan den senaste distributionen. Om du distribuerar med "RunFromPackage" i "deploymentMethod" genereras en SAS med ett förfallodatum på 1 år och anges som värdet "WEBSITE_RUN_FROM_PACKAGE" i programkonfigurationen. Azure Functions använder denna SAS för att referera till paketfilen för funktionskörning, så om SAS har upphört att gälla körs inte funktionen. Lös problemet genom att distribuera igen för att generera en SAS med ett förfallodatum på ett år.

Fel: Inget paket hittades med angivet mönster

Kontrollera om paketet som anges i aktiviteten har publicerats som en artefakt i kompileringen eller i ett tidigare skede och laddats ned i det aktuella jobbet.

Fel: Alternativet Publicera med zip-distribution stöds inte för msBuild-pakettypen

Webbpaket som skapas via MSBuild-aktiviteten (med standardargument) har en kapslad mappstruktur som endast kan distribueras korrekt av Web Deploy. Distributionsalternativet publish-to-zip kan inte användas för att distribuera dessa paket. Utför följande steg för att konvertera paketeringsstrukturen:

  1. I uppgiften Skapa lösning ändrar du MSBuild-argumenten till /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Skärmbild som visar värdena för build-lösningen.

  2. Lägg till en Arkiv-uppgift och ändra värdena enligt följande:

    1. Ändra rotmappen eller filen till arkivet till $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Avmarkera kryssrutan Prepend root folder name to archive paths (Förbered rotmappens namn för arkivsökvägar ):

      Skärmbild som visar arkivvärdena.

Distributionen av funktionsappen i Windows lyckas men appen fungerar inte

Det här problemet kan inträffa om det inte finns någon web.config fil i din app. Du kan antingen lägga till en web.config fil i källan eller automatiskt generera en med hjälp av program- och konfigurationsinställningarna för uppgiften.

  1. Välj uppgiften och gå till Generera web.config parametrar för Python-, Node.js-, Go- och Java-appar:

    Skärmbild som visar avsnittet Generera web.config parametrar.

  2. Välj knappen Mer (...) under Generera web.config parametrar för Python-, Node.js-, Go- och Java-appar för att redigera parametrarna:

    Skärmbild som visar parametrarna Generera web.config.

  3. Välj din programtyp i listan Programramverk .

  4. Välj OK. Om du gör det fylls de web.config parametrar som krävs för att generera web.config filen.

Vanliga frågor och svar

Hur konfigurerar jag min tjänstanslutning?

Den här uppgiften kräver en Azure Resource Manager-tjänstanslutning.

Hur konfigurerar jag distribution av webbjobb med Application Insights?

När du distribuerar till en App Service måste du även aktivera Exclude files from the App_Data folderom du har konfigurerat Application Insights och har aktiverat Remove additional files at destination. Om du aktiverar det här alternativet hålls Application Insights-tillägget i ett säkert tillstånd. Det här steget krävs eftersom det kontinuerliga webbjobbet för Application Insights installeras i mappen App_Data.

Hur konfigurerar jag min agent om den finns bakom en proxy när jag distribuerar till App Service?

Om din lokala agent kräver en webbproxy kan du informera agenten om proxyn under konfigurationen. På så sätt kan din agent ansluta till Azure Pipelines eller Azure DevOps Server via proxyn. Läs mer om att köra en lokalt installerad agent bakom en webbproxy.

Jag kan inte distribuera till en intern App Service-miljön med hjälp av en Azure Resource Manager-tjänstanslutning och en Microsoft-värdbaserad agent

En Microsoft-värdbaserad agent fungerar inte med en App Service-miljön. I stället måste du konfigurera en privat agent på en virtuell dator som finns i samma virtuella nätverk som App Service-miljön. Ange också en privat DNS-zon för att möjliggöra kommunikation mellan resurserna.

Exempel

Här är ett YAML-exempelfragment som distribuerar Azure-funktioner i Windows:


variables:
  azureSubscription: Contoso
  # To ignore SSL error, uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:
- task: AzureFunctionApp@2
  displayName: Azure Function App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplefunctionapp
    appType: functionApp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Om du vill distribuera en funktion i Linux lägger du till parametern appType och ställer in den på appType: functionAppLinux. Om du inte anger något värde functionApp är standardvärdet.

Om du uttryckligen vill ange distributionsmetoden som Zip Deploy lägger du till parametern deploymentMethod: zipDeploy. Ett annat värde som stöds för den här parametern är runFromPackage. Om du inte anger något värde auto är standardvärdet.

En genomgång som visar hur du skapar en CI/CD-pipeline finns i Skapa och distribuera Java till Azure Functions.

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
Krav Ingen
Funktioner Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet.
Kommandobegränsningar Valfri
Inställningsbara variabler Valfri
Agentversion 2.104.1 eller senare
Uppgiftskategori Distribuera