Sdílet prostřednictvím


AzureFunctionApp@2 – Úloha Nasazení služby Azure Functions v2

Aktualizujte aplikaci funkcí pomocí .NET, Pythonu, JavaScriptu, PowerShellu, webových aplikací založených na 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. 
    #isFlexConsumption: false # boolean. Is Function App on Flex Consumption Plan. Default: false.
    appName: # string. Required. Azure Functions App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "" && isFlexConsumption = false. 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 && isFlexConsumption = false. Runtime stack. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && isFlexConsumption = false && 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 Manageru
Vstupní alias: azureSubscription. string. Požadovaný.

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


appType - typ aplikace
string. Požadovaný. Povolené hodnoty: functionApp (aplikace funkcí ve Windows), functionAppLinux (aplikace funkcí v Linuxu).

Vyberte typ aplikace Funkcí Azure pro nasazení.


isFlexConsumption - Je aplikace funkcí v plánu Flex Consumption
boolean. Výchozí hodnota: false.

Nastavte true, pokud je aplikace funkcí v plánu Flex Consumption.


appName - název aplikace Azure Functions
string. Požadovaný.

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


deployToSlotOrASE - Nasazení do slotu nebo služby App Service Environment
boolean. Volitelný. Používá se při appType != "" && isFlexConsumption = false. Výchozí hodnota: false.

Nasadí se 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 výchozí produkční slot. Můžete také 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ů.


deployToSlotOrASE - Nasazení do slotu nebo služby App Service Environment
boolean. Volitelný. Používá se při appType != "". Výchozí hodnota: false.

Nasadí se 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 výchozí produkční slot. Můžete také 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ů.


skupiny prostředků
string. Požadováno při 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 službu Azure App Service uvedenou výše.


slotu
string. Požadováno při deployToSlotOrASE = true. Výchozí hodnota: production.

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


slotu
string. Požadováno při deployToSlotOrASE = true. Výchozí hodnota: production.

Zadejte nebo vyberte existující slot, který není v produkčním slotu.


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

Cesta k souboru balíčku nebo složky, která obsahuje obsah služby App Service vygenerovaný nástrojem MSBuild nebo komprimovaným souborem ZIP. Podporují se proměnné (Build | Release) a zástupné dokumentace. Například $(System.DefaultWorkingDirectory)/**/*.zip.


zásobníku modulu runtime
string. Volitelný. Používá se při appType = functionAppLinux && isFlexConsumption = false. Povolené hodnoty: 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.

Zadejte architekturu a verzi, na které bude vaše aplikace funkcí běžet. Můžete použít kteroukoli z podporovaných verzí modulu runtime. Staré hodnoty, jako je DOCKER|microsoft/azure-functions-*, jsou zastaralé. Nové hodnoty jsou uvedeny v rozevíracím seznamu v pomocníka pro úkoly. Pokud je v podporovaných verzích modulu runtime k dispozici novější verze rozhraní, můžete ji zadat i v případě, že není v seznamu.

Poznámka

Tato hodnota v současné době neaktualizuje linuxFxVersion, na kterém je web spuštěný. To znamená, že nemůžete aktualizovat zásobník z Node 18 na Node 20. Úloha aktuálně aktualizuje jenom nastavení aplikace.


zásobníku modulu runtime
string. Volitelný. Používá se při 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 v4)) 2/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/v)3/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 kteroukoli z podporovaných verzí modulu runtime. Staré hodnoty, jako je DOCKER|microsoft/azure-functions-*, jsou zastaralé. Nové hodnoty jsou uvedeny v rozevíracím seznamu v pomocníka pro úkoly. Pokud je v podporovaných verzích modulu runtime k dispozici novější verze rozhraní, můžete ji zadat i v případě, že není v seznamu.


nastavení aplikace
string.

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

Další informace o nastavení aplikace najdete v tématu Proměnné prostředí a nastavení aplikace ve službě Azure App Service.


metody nasazení
string. Požadováno při appType != "" && isFlexConsumption = false && appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Povolené hodnoty: auto (autodetekce), zipDeploy (zip deploy), runFromPackage (Zip Deploy with Run From Package). Výchozí hodnota: auto.

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


metody nasazení
string. Požadováno při appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Povolené hodnoty: auto (autodetekce), zipDeploy (zip deploy), runFromPackage (Zip Deploy with Run From Package). Výchozí hodnota: auto.

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


metody nasazení
string. Požadováno při appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Povolené hodnoty: auto (autodetekce), zipDeploy (zip deploy), runFromPackage (Zip Deploy with Run From Package). Výchozí hodnota: auto.

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


Možnosti řízení úkolů

Všechny úkoly mají kromě vstupů úkolů také možnosti řízení. Další informace naleznete v tématu Možnosti ovládacího prvku a běžné vlastnosti úloh.

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
adresu URL aplikace vybrané aplikace Funkcí Azure.

Poznámky

Úloha nasazení funkce Azure functions slouží k aktualizaci služby Azure Functions tak, aby nasadil Functions do Azure. Úloha funguje na agentech Azure Pipelines pro různé platformy se systémem Windows, Linux nebo Mac a používá základní technologie nasazení RunFromPackage, Zip Deploy a rozhraní REST API Kudu.

Úloha funguje pro azure Functions podporované jazyky.

Požadavky pro úlohu

Aby úloha fungovala správně, musí být v cílových počítačích nastavená následující předpoklady.

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 Funkcí Azure je možné vytvořit na webu azure Portal. Alternativně můžete úlohy Azure PowerShellu použít ke spouštění skriptů AzureRM PowerShellu ke zřízení a konfiguraci aplikace Azure Functions.

Tuto úlohu můžete použít k nasazení Azure Functions (Windows/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. Přidejte předplatné Azure, které se má použít v definici Build or Release Management, otevřením obrazovky Správa účtu (ikona ozubeného kolečka v pravém horním rohu obrazovky) a potom klikněte na kartu Služby.

Vytvořte koncový bod služby ARM a použijte typ koncového bodu Azure Resource Manageru. Další podrobnosti najdete podle kroků uvedených v odkazu zde.

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

Metody nasazení

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

Pokud chcete změnit možnost nasazení na základě balíčku v úloze návrháře, rozbalte Další možnosti nasazení a povolte Vybrat metodu nasazení.

Úloha na základě typu agenta Azure App Service a Azure Pipelines 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 služby App Service a operačního systému agenta.

  • Pokud je k dispozici skript po nasazení, použijte zip Deploy.
  • Pokud je typem služby App Service webová aplikace v Linuxu, použijte nástroj Zip Deploy.
  • Pokud je k dispozici soubor .war, použijte War Deploy.
  • Pokud je k dispozici soubor .jar, použijte příkaz Spustit ze souboru ZIP.
  • Pro všechny ostatní úlohy použijte balíček Spustit z (prostřednictvím příkazu Zip Deploy).

U agenta mimo Windows (pro jakýkoli typ služby App Service) úloha spoléhá na rozhraní Kudu REST API k nasazení webové aplikace.

Kudu REST API

Rozhraní 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 kopíruje soubory do služby Azure App Service.

Nasazení souboru ZIP

Zip Deploy vytvoří balíček pro nasazení .zip z vybraného balíčku nebo složky. Potom nasadí obsah souboru do složky wwwroot aplikace funkcí 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í zip pro službu Azure Functions.

Spustit z balíčku

Spustit z balíčku vytvoří stejný balíček nasazení jako Zip Deploy. Místo nasazení souborů do složky wwwroot připojí modul runtime Functions 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 Spuštění služby Azure Functions ze souboru balíčku.

Řešení problémů

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

Úloha používá instanční objekt v připojení ke službě k ověření v Azure. Pokud vypršela platnost instančního objektu nebo nemá oprávnění ke službě App Service, úloha selže s touto chybou. Ověřte platnost použitého instančního objektu a ověřte, že se nachází 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žívání ověřování instančního objektu.

Chyba SSL

Pokud chcete použít certifikát ve službě App Service, musí být certifikát podepsaný důvěryhodnou certifikační autoritou. Pokud vaše webová aplikace poskytuje 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.

Verze po dlouhou dobu přestane reagovat a pak selže.

Tento problém může být důsledkem nedostatečné kapacity v plánu služby App Service. Pokud chcete tento problém vyřešit, můžete vertikálně navýšit kapacitu instance služby App Service, abyste zvýšili dostupné využití procesoru, paměti RAM a místa na disku nebo zkuste použít jiný plán služby App Service.

5xx kódů chyb

Pokud se zobrazí chyba 5xx, zkontrolujte stav vašehoslužby Azure.

Funkce Azure Najednou přestala fungovat

Azure Functions může náhle přestat fungovat, pokud uplynulo více než jeden rok od posledního nasazení. Pokud nasadíte s parametrem RunFromPackage v části deploymentMethod, vygeneruje se SAS s datem vypršení platnosti 1 rok a nastaví se jako hodnota "WEBSITE_RUN_FROM_PACKAGE" v konfiguraci aplikace. Azure Functions používá tento SAS k odkazování na soubor balíčku pro spuštění funkce, takže pokud vypršela platnost SAS, funkce se nespustí. Pokud chcete tento problém vyřešit, nasaďte ho znovu a vygenerujte SAS s datem vypršení platnosti jednoho roku.

Chyba: Nebyl nalezen žádný balíček se zadaným vzorem.

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

Chyba: Publikování pomocí možnosti nasazení zip není podporováno pro typ balíčku msBuild.

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í typu publish-to-zip se nedá použít k nasazení těchto balíčků. Pokud chcete převést strukturu balení, postupujte takto:

  1. V úloze sestavení řešení změňte argumenty NÁSTROJE 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 řešení sestavení

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

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

    2. Zrušte zaškrtnutí políčka Název předpend kořenové složky pro archivaci cest:

      Snímek obrazovky zobrazící hodnoty archivu

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

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

  1. Vyberte úkol a přejděte na Generovat parametry web.config pro Python, Node.js, Go a Java apps:

    snímek obrazovky s oddílem Generovat parametry web.config

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

    snímek obrazovky znázorňující parametry vygenerovat web.config

  3. V seznamu rozhraní Application Framework vyberte typ aplikace.

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

Nejčastější dotazy

Jak mám nakonfigurovat připojení ke službě?

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

Jak mám nakonfigurovat nasazení webové úlohy pomocí Application Insights?

Pokud máte nakonfigurované Application Insights a povolili jste Remove additional files at destination, musíte také povolit Exclude files from the App_Data folderpři nasazování do služby App Service. Povolením této možnosti zůstane rozšíření Application Insights 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 za proxy serverem během nasazování do služby App Service?

Pokud váš agent v místním prostředí vyžaduje webový proxy server, můžete agenta informovat o proxy serveru během konfigurace. To umožňuje vašemu agentu připojit se k Azure Pipelines nebo Azure DevOps Serveru přes proxy server. Další informace o spuštění agenta v místním prostředí za webovým proxy serverem.

Nejde nasadit do interního prostředí App Service Environment pomocí připojení služby Azure Resource Manager a agenta hostovaného Microsoftem

Agent hostovaný Microsoftem nebude s prostředím App Service Environment fungovat. 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 tak, aby umožňovala komunikaci mezi prostředky.

Příklady

Tady je ukázkový fragment kódu YAML, který nasazuje funkce Azure Functions 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, přidejte parametr appType a nastavte ho na appType: functionAppLinux. Pokud nezadáte hodnotu, functionApp je výchozí.

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

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

Požadavky

Požadavek Popis
Typy kanálů YAML, klasické sestavení, 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ů Jakýkoliv
nastavitelné proměnné Jakýkoliv
Verze agenta 2.104.1 nebo vyšší
Kategorie úkolu Nasadit