AzureFunctionApp@2 – Azure Functions nasazení úlohy v2

Aktualizace aplikace funkcí pomocí webových aplikací založených na .NET, Pythonu, JavaScriptu, PowerShellu a Javě

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.

Vstupy

connectedServiceNameARM - Připojení azure Resource Manager
Alias vstupu: azureSubscription. string. Povinná hodnota.

Vyberte předplatné Azure Resource Manager pro nasazení.


appType - Typ aplikace
string. Povinná hodnota. Povolené hodnoty: functionApp (Function App ve Windows), functionAppLinux (Function App v Linuxu).

Vyberte typ Aplikace funkcí Azure pro nasazení.


appName - název aplikace Azure Functions
string. Povinná hodnota.

Zadejte název existující aplikace Azure Functions. Uvedené aplikace funkcí budou založené na vybraném typu aplikace.


deployToSlotOrASE - Nasazení do slotu nebo App Service Environment
boolean. Nepovinný parametr. Použijte, když appType != "". Výchozí hodnota: false.

Nasadí do existujícího slotu nasazení nebo Azure App Service Environment. Pro oba cíle úkol potřebuje název skupiny prostředků.

Pokud je cílem nasazení slot, použije se jako výchozí produkční slot. Je také možné zadat jakýkoli jiný název existujícího slotu.

Pokud je cílem nasazení Azure App Service Environment, ponechte název slotu jako produkční a zadejte název skupiny prostředků.


resourceGroupName - Skupina prostředků
string. Vyžaduje se, když deployToSlotOrASE = true.

Název skupiny prostředků se vyžaduje, pokud je cílem nasazení slot nasazení nebo App Service Environment.

Zadá nebo vybere skupinu prostředků Azure, která obsahuje Azure App Service uvedené výše.


slotName - Slot
string. Vyžaduje se, když deployToSlotOrASE = true. Výchozí hodnota: production.

Zadá nebo vybere existující slot s výjimkou produkčního slotu.


slotName - Slot
string. Vyžaduje se, když deployToSlotOrASE = true. Výchozí hodnota: production.

Zadejte nebo vyberte existující slot jiný než produkční slot.


package - Balíček nebo složka
string. Povinná hodnota. Výchozí hodnota: $(System.DefaultWorkingDirectory)/**/*.zip.

Cesta k balíčku nebo složce, která obsahuje App Service obsah vygenerovaný nástrojem MSBuild nebo komprimovaný soubor ZIP. Podporují se proměnné (verzebuildu | ) a zástupné é kóty. Například, $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - Zásobník modulu runtime
string. Nepovinný parametr. Použijte, když appType = functionAppLinux. Povolené hodnoty: DOTNET|6.0, DOTNET-ISOLATED|6.0, , DOTNET-ISOLATED|8.0DOTNET-ISOLATED|7.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

Zadejte architekturu a verzi, na které bude vaše aplikace funkcí běžet. Můžete použít libovolnou z podporovaných verzí modulu runtime. Staré hodnoty, jako jsou DOCKER|microsoft/azure-functions-* , jsou zastaralé. Nové hodnoty jsou uvedené v rozevíracím seznamu v asistent úkolu. Pokud je v podporovaných verzích modulu runtime k dispozici novější verze architektury, můžete ji zadat, i když není v seznamu.


runtimeStack - Zásobník modulu runtime
string. Nepovinný parametr. Použijte, když appType = functionAppLinux. Povolené hodnoty: 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|4)), (JAVA|4)) JAVA|11 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)).

Zadejte architekturu a verzi, na které bude vaše aplikace funkcí běžet. Můžete použít libovolnou z podporovaných verzí modulu runtime. Staré hodnoty, jako jsou DOCKER|microsoft/azure-functions-* , jsou zastaralé. Nové hodnoty jsou uvedené v rozevíracím seznamu v asistent úkolu. Pokud je v podporovaných verzích modulu runtime k dispozici novější verze architektury, můžete ji zadat, i když není v seznamu.


appSettings - Nastavení aplikace
string.

Zadejte nastavení aplikace pomocí syntaxe -key value (například:-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Uzavřete hodnoty, které obsahují mezery v dvojitých uvozovkách (například: "Eastern Standard Time").


deploymentMethod - Metoda nasazení
string. Vyžaduje se, když appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Povolené hodnoty: auto (Auto-detect), zipDeploy (Zip Deploy), runFromPackage (Zip Deploy with Run From Package). Výchozí hodnota: auto.

Určuje metodu nasazení aplikace. Aplikace Linux Consumption tuto konfiguraci nepodporují.


deploymentMethod - Metoda nasazení
string. Vyžaduje se, když appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Povolené hodnoty: auto (Auto-detect), zipDeploy (Zip Deploy), runFromPackage (Zip Deploy with Run From Package). Výchozí hodnota: auto.

Zvolí metodu nasazení pro aplikaci. Aplikace Linux Consumption tuto konfiguraci nepodporují.


Možnosti ovládání úloh

Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace najdete v tématu Možnosti ovládacích prvků a běžné vlastnosti úlohy.

Výstupní proměnné

Tato úloha definuje následující výstupní proměnné, které můžete využívat v podřízených krocích, úlohách a fázích.

AppServiceApplicationUrl
Adresa URL aplikace vybrané aplikace Azure Function App

Poznámky

Úloha nasazení funkce Azure functions slouží k aktualizaci Azure Functions pro nasazení funkcí do Azure. Tato úloha funguje na agentech Azure Pipelines pro různé platformy se systémem Windows, Linux nebo Mac a využívá technologie nasazení RunFromPackage, Zip Deploy a Kudu REST API.

Úloha funguje pro Azure Functions podporované jazyky.

Předpoklady pro úkol

Aby úloha fungovala správně, musí být na cílových počítačích nastaveny následující požadavky.

Funkce Azure

Úloha se používá k nasazení projektu Azure Functions do existující funkce Azure Functions. Aplikace Funkcí Azure by měla existovat před spuštěním úlohy. Aplikaci Azure Function App je možné vytvořit z Azure Portal. Případně můžete úlohu Azure PowerShell použít ke spuštění skriptů AzureRM PowerShellu ke zřízení a konfiguraci aplikace funkcí Azure.

Úloha se dá použít k nasazení Azure Functions (Windows nebo Linux).

Předplatné Azure

Pokud chcete nasadit do Azure, musí být předplatné Azure propojené se službou Azure Pipelines pomocí karty Služby v části Správa účtu. Pokud chcete předplatné Azure použít v definici Sestavení nebo Release Management, otevřete obrazovku Správa účtu (ikona ozubeného kola v pravém horním rohu obrazovky) a pak klikněte na kartu Služby.

Create koncový bod služby ARM a použijte typ koncového bodu Azure Resource Manager. Další podrobnosti najdete podle kroků uvedených na tomto odkazu.

Úloha nefunguje s koncovým bodem služby Azure Classic a nebude tato připojení uvádět v parametrech v úloze.

Metody nasazení

V této úloze je k dispozici několik metod nasazení.

Chcete-li změnit možnost nasazení založeného na balíčku v úloze návrháře, rozbalte další možnosti nasazení a povolte možnost Vybrat metodu nasazení.

V závislosti na typu Azure App Service a agenta Azure Pipelines úloha používá vhodnou technologii nasazení. Technologie nasazení používané úlohami jsou následující:

Ve výchozím nastavení se úloha pokusí vybrat příslušnou technologii nasazení na základě vstupního balíčku, typu App Service a operačního systému agenta.

  • Pokud je k dispozici skript po nasazení, použijte Zip Deploy.
  • Pokud je typ App Service Webová aplikace v Linuxu, použijte nasazení zipu.
  • Pokud je k dispozici soubor .war, použijte nasazení války.
  • Pokud je k dispozici soubor .jar, použijte příkaz Run-From-Zip.
  • Pro všechny ostatní úlohy použijte příkaz Spustit z balíčku (prostřednictvím nasazení souboru ZIP).

U jiného agenta než Windows (pro libovolný typ App Service) úloha při nasazování webové aplikace spoléhá na rozhraní Kudu REST API.

Kudu REST API

Rozhraní Kudu REST API funguje na agentech automatizace pro Windows i Linux, pokud je cílem webová aplikace ve Windows, webová aplikace v Linuxu (integrovaný zdroj) nebo aplikace funkcí. Úloha pomocí Kudu zkopíruje soubory do Azure App Service.

Nasazení souboru ZIP

Nasazení souboru ZIP vytvoří balíček pro nasazení .zip ze zvoleného balíčku nebo složky. Potom nasadí obsah souboru do složky wwwroot aplikace funkcí s názvem App Service v Azure. Tato možnost přepíše veškerý existující obsah ve složce wwwroot. Další informace najdete v tématu Nasazení souboru ZIP pro Azure Functions.

Spuštění z balíčku

Příkaz Spustit z balíčku vytvoří stejný balíček pro nasazení jako nasazení zipu. Místo nasazení souborů do složky wwwroot modul runtime functions připojí celý balíček. Při použití této možnosti se soubory ve složce wwwroot stanou jen pro čtení. Další informace najdete v tématu věnovaném spouštění Azure Functions ze souboru balíčku.

Poradce při potížích

Chyba: Nepodařilo se načíst přístupový token pro Azure. Ověřte, jestli je použitý instanční objekt platný a nevypršela jeho platnost.

Úloha používá instanční objekt v připojení služby k ověření v Azure. Pokud vypršela platnost instančního objektu nebo nemá oprávnění k App Service, úloha selže s touto chybou. Ověřte platnost použitého instančního objektu a to, že je k dispozici v registraci aplikace. Další informace najdete v tématu Použití řízení přístupu na základě role ke správě přístupu k prostředkům předplatného Azure. Tento blogový příspěvek obsahuje také další informace o použití ověřování instančního objektu.

Chyba SSL

Pokud chcete použít certifikát v App Service, musí být certifikát podepsaný důvěryhodnou certifikační autoritou. Pokud webová aplikace zobrazí chyby ověření certifikátu, pravděpodobně používáte certifikát podepsaný svým držitelem. Pokud chcete chybu vyřešit, nastavte proměnnou s názvem VSTS_ARM_REST_IGNORE_SSL_ERRORS na hodnotu true v kanálu buildu nebo verze.

Vydání se na dlouhou dobu zasekne a pak selže

Příčinou tohoto problému může být nedostatečná kapacita ve vašem plánu App Service. Pokud chcete tento problém vyřešit, můžete vertikálně navýšit kapacitu instance App Service a zvětšit dostupný procesor, paměť RAM a místo na disku nebo zkusit použít jiný plán App Service.

Chybové kódy 5xx

Pokud se zobrazí chyba 5xx , zkontrolujte stav služby Azure.

Funkce Azure Functions náhle přestala fungovat

Azure Functions může náhle přestat fungovat, pokud od posledního nasazení uplynul více než jeden rok. Pokud nasadíte pomocí runFromPackage v "deploymentMethod", vygeneruje se SAS s datem vypršení platnosti 1 rok a v konfiguraci aplikace se nastaví jako hodnota "WEBSITE_RUN_FROM_PACKAGE". Azure Functions používá tento SAS k odkazování na soubor balíčku pro provádění funkce, takže pokud platnost sdíleného přístupového podpisu vyprší, funkce se nespustí. Pokud chcete tento problém vyřešit, nasaďte ho znovu a vygenerujte sdílený přístupový podpis s datem vypršení platnosti jeden rok.

Chyba: nenašel se žádný balíček se zadaným vzorem.

Zkontrolujte, jestli se balíček uvedený v úloze publikoval v sestavení nebo předchozí fázi jako artefakt a stáhnul se v aktuální úloze.

Chyba: Typ balíčku msBuild nepodporuje publikování pomocí možnosti nasazení zip.

Webové balíčky vytvořené prostřednictvím úlohy MSBuild (s výchozími argumenty) mají vnořenou strukturu složek, kterou lze správně nasadit pouze nasazením webu. Možnost nasazení publish-to-zip nejde použít k nasazení těchto balíčků. Pokud chcete převést strukturu balení, postupujte takto:

  1. V úloze Sestavit řešení změňte argumenty MSBuild na /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Snímek obrazovky znázorňující hodnoty sestavení řešení

  2. Přidejte úlohu Archivovat a následujícím způsobem změňte hodnoty:

    1. Změňte kořenovou složku nebo soubor, který chcete archivovat , na $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Zrušte zaškrtnutí políčka Před název kořenové složky archivovat cesty :

      Snímek obrazovky znázorňující archivní hodnoty

Nasazení aplikace funkcí ve Windows proběhlo úspěšně, ale aplikace nefunguje

K tomuto problému může dojít, pokud v aplikaci není soubor web.config. Můžete buď přidat web.config soubor do zdroje, nebo ho automaticky vygenerovat pomocí nastavení aplikace a konfigurace úlohy.

  1. Vyberte úlohu a přejděte do části Generování parametrů web.config pro aplikace Python, Node.js, Go a Java:

    Snímek obrazovky znázorňující část Generování parametrů web.config

  2. V části Generovat web.config parametry pro aplikace Python, Node.js, Go a Java vyberte tlačítko Další (...) a upravte parametry:

    Snímek obrazovky znázorňující vygenerování parametrů web.config

  3. V seznamu Architektura aplikací vyberte typ vaší aplikace.

  4. Vyberte OK. Tím se naplní parametry web.config potřebné k vygenerování web.config souboru.

Nejčastější dotazy

Jak mám nakonfigurovat připojení služby?

Tato úloha vyžaduje připojení služby Azure Resource Manager.

Jak mám nakonfigurovat nasazení webových úloh pomocí Application Insights?

Pokud nasazujete do App Service a máte nakonfigurovanou službu Application Insights a povolili Remove additional files at destinationjste , musíte také povolit Exclude files from the App_Data folder. Povolením této možnosti zajistíte, že rozšíření Application Insights bude v bezpečném stavu. Tento krok je povinný, protože nepřetržitá webová úloha Application Insights je nainstalovaná do složky App_Data.

Jak mám nakonfigurovat agenta, pokud je během nasazování do App Service za proxy serverem?

Pokud agent v místním prostředí vyžaduje webový proxy server, můžete o proxy serveru informovat agenta během konfigurace. Agent se tak bude moct připojit ke službě Azure Pipelines nebo Azure DevOps Server prostřednictvím proxy serveru. Přečtěte si další informace o spuštění agenta v místním prostředí za webovým proxy serverem.

Nemůžu provést nasazení do interního App Service Environment pomocí připojení služby Azure Resource Manager a agenta hostovaného Microsoftem

Agent hostovaný Microsoftem záměrně nebude fungovat s App Service Environment. Místo toho musíte nakonfigurovat privátního agenta na virtuálním počítači, který je ve stejné virtuální síti jako App Service Environment. Nastavte také privátní zónu DNS, která povolí komunikaci mezi prostředky.

Příklady

Tady je ukázkový fragment kódu YAML, který nasazuje funkce Azure ve 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

Pokud chcete nasadit funkci v Linuxu appType , přidejte parametr a nastavte ho na appType: functionAppLinux. Pokud nezadáte hodnotu, functionApp je výchozí hodnota .

Pokud chcete explicitně zadat metodu nasazení jako Zip Deploy, přidejte parametr deploymentMethod: zipDeploy. Další podporovaná hodnota tohoto parametru je runFromPackage. Pokud nezadáte hodnotu, auto je výchozí hodnota .

Návod, který ukazuje, jak vytvořit kanál CI/CD, najdete v tématu Sestavení a nasazení Javy do Azure Functions.

Požadavky

Požadavek Popis
Typy kanálů YAML, klasický build, klasická verze
Běží na Agent, DeploymentGroup
Požadavky Žádné
Možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
Omezení příkazů Všechny
Nastavitelné proměnné Všechny
Verze agenta 2.104.1 nebo vyšší
Kategorie úloh Nasazení