AzureWebApp@1 – Azure Web App v1-uppgift

Den här uppgiften distribuerar en Azure-webbapp för Linux eller Windows.

Syntax

# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. 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.
    #customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder. 
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. 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: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.

Ingångar

azureSubscription - Azure-prenumeration
string. Krävs.

Anger Azure Resource Manager-prenumerationsanslutning för distributionen.


appType - apptyp
string. Krävs. Tillåtna värden: webApp (webbapp i Windows), webAppLinux (webbapp i Linux).

Anger typen av Azure-webbapp.


appName - Appnamn
string. Krävs.

Anger namnet på en befintlig Azure App Service. Endast apptjänster som baseras på den valda apptypen visas.


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

Väljer alternativet för att distribuera till ett befintligt distributionsfack eller en Azure App Service-miljö.
För båda målen behöver aktiviteten ett resursgruppsnamn.
Om distributionsmålet är ett fack är standardinställningen 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 resursgruppens namn.


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

Resursgruppens namn krävs när distributionsmålet antingen är ett distributionsfack eller en Azure App Service-miljö.
Anger den Azure-resursgrupp som innehåller Azure App Service som anges ovan.


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

Anger ett befintligt fack, exklusive 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 genererats av MSBuild, en komprimerad zip-fil eller en krigsfil. Variabler ( Build | Release) och jokertecken stöds. Till exempel $(System.DefaultWorkingDirectory)/**/*.zip eller $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - anpassad
string. Valfri. Använd när package EndsWith .war.

Anger det anpassade mappnamn som du vill distribuera till.
Om fältet är tomt distribueras paketet till <appname>.azurewebsites.net/<warpackagename>.
Om ROOT anges distribueras paketet till <appname>.azurewebsited.net.
I alla andra instanser distribueras den till <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Körningsstacken
string. Valfri. Använd när appType = webAppLinux.

Webbapp i Linux erbjuder två olika alternativ för att publicera ditt program: distribution av anpassade avbildningar (Webbapp för containrar) och appdistribution med en inbyggd plattformsbild (webbapp i Linux). Den här parametern är endast tillgänglig när Linux Web App väljs som en apptyp i uppgiften.


startUpCommand - Startkommando
string. Valfri. Använd när appType = webAppLinux.

Anger startkommandot.
Till exempel:
dotnet run
dotnet filename.dll.


customWebConfig - Generera web.config parametrar för Python, Node.js, Go och Java-appar
string. Valfri. Använd när appType != webAppLinux && package NotEndsWith .war.

En standard web.config genereras och distribueras till Azure App Service om programmet inte har någon. Värdena i web.config varierar beroende på programramverket och de kan redigeras. För node.js-programmet har web.config till exempel en startfil och iis_node modulvärden. Den här redigeringsfunktionen gäller endast för som genereras web.config.


appSettings - Appinställningar
string.

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


configurationStrings - Konfigurationsinställningar
string.

Ange konfigurationsinställningarna för webbappen med hjälp av syntaxen -key value (till exempel -phpVersion 5.6-linuxFxVersion: node|6.11). Omslut värden som innehåller blanksteg med dubbla citattecken.


deploymentMethod - Distributionsmetod
string. Krävs när appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Tillåtna värden: auto (identifiera automatiskt), zipDeploy (Zip Deploy), runFromPackage (Kör från paket). Standardvärde: auto.

Välj distributionsmetod för appen. Godtagbara värden är automatisk, zipDeployoch runFromPackage.


Alternativ för aktivitetskontroll

Alla aktiviteter har kontrollalternativ utöver sina uppgiftsindata. 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:en för den valda Azure App Service.

Anmärkningar

Använd den här uppgiften för att distribuera webbprogram till Azure App Service.

Distributionsmetoder

Det finns flera distributionsmetoder i den här uppgiften. Auto är standardalternativet.

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

Baserat på typen av Azure App Service- och Azure Pipelines-agent väljer uppgiften en lämplig distributionsteknik. De olika distributionstekniker som används av uppgiften är:

  • Kudu REST-API:er
  • Zip-distribution
  • RunFromPackage

Som standard försöker uppgiften välja lämplig distributionsteknik med tanke på indatapaketet, apptjänsttypen och agentoperativsystemet.

  • När apptjänsttypen är webbapp i Linux-appen använder du Zip Deploy
  • Om en War-fil tillhandahålls använder du War Deploy
  • Om du anger en Jar-fil använder du Kör från paket
  • För alla andra använder du Kör från Zip- (via Zip Deploy)

På en icke-Windows-agent (för alla apptjänsttyper) förlitar sig uppgiften på Kudu REST API:er för att distribuera webbappen.

Kudu REST-API:er

Kudu REST-API:er fungera på Windows- eller Linux-automationsagenter när målet är webbapp i Windows, webbapp på Linux (inbyggd källa) eller funktionsapp. Uppgiften använder Kudu för att kopiera filer till Azure App Service.

Zip-distribution

Skapar ett .zip distributionspaket för det valda paketet eller mappen. Filinnehållet distribueras sedan till mappen wwwroot för funktionsappen i Azure App Service. Det här alternativet skriver över allt befintligt innehåll i mappen wwwroot. Mer information finns i Zip-distribution för Azure Functions.

RunFromPackage

Skapar samma distributionspaket som Zip Deploy. Men i stället för att distribuera filer till mappen wwwroot monteras hela paketet av Azure Functions-körningen. Med det här alternativet blir filer i mappen wwwroot skrivskyddade. Mer information finns i Kör Azure Functions från en paketfil.

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 åtkomst till dina Azure-prenumerationsresurser. Det här blogginlägget innehåller även 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 webbappen ger dig certifikatverifieringsfel 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 låser sig under lång tid 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 tillgängligt processor-, RAM-minne- och diskutrymme eller prova med en annan App Service-plan.

5xx felkoder

Om du ser felet 5xx kontrollerar statusen för azure-tjänsten.

Azure-funktionen slutade plötsligt fungera

Azure Functions kan plötsligt sluta fungera om mer än ett år har passerat 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 nämns i uppgiften publiceras som en artefakt i bygget eller i en tidigare fas och laddas ned i det aktuella jobbet.

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

Webbpaket som skapats 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 arkivaktivitet och ändra värdena enligt följande:

    1. Ändra rotmapp eller fil för att arkivera till $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Avmarkera kryssrutan Prepend-rotmappnamn för arkivsökvägar:

      Skärmbild som visar arkivvärdena.

Vanliga frågor och svar

Vad är skillnaden mellan AzureWebApp och AzureRmWebAppDeployment uppgifter?

Uppgiften Azure Web App (AzureWebApp) är det enklaste sättet att distribuera till en Azure-webbapp. Som standard sker distributionen till rotprogrammet i Azure-webbappen.

Uppgiften Azure App Service Deploy (AzureRmWebAppDeployment) kan hantera fler anpassade scenarier, till exempel:

Not

Filtransformeringar och variabelersättning stöds också av den separata filtransformeringsaktiviteten för användning i Azure Pipelines. Du kan använda filtransformeringsaktiviteten för att tillämpa filtransformeringar och variabelersättningar på alla konfigurations- och parameterfiler.

Distributionen av webbappar i Windows lyckas men appen fungerar inte

Det kan bero på att web.config inte finns i din app. Du kan antingen lägga till en web.config fil i källan eller generera en automatiskt med program- och konfigurationsinställningar.

  • Klicka på uppgiften och gå till Generera web.config parametrar för Python, Node.js, Go- och Java-appar.

    Skärmbild av dialogrutan Generera web.config parametrar.

  • Klicka på knappen mer ... för att redigera parametrarna.

    Skärmbild av listrutan.

  • Välj din programtyp i listrutan.

  • Klicka på OK. Detta fyller i de web.config parametrar som krävs för att generera web.config.

Distributionen av webbappar i App Service Environment (ASE) fungerar inte

  • Se till att Azure DevOps-byggagenten finns på samma virtuella nätverk (undernätet kan vara annorlunda) som den interna lastbalanseraren (ILB) för ASE. Detta gör att agenten kan hämta kod från Azure DevOps och distribuera till ASE.
  • Om du använder Azure DevOps behöver agenten inte vara tillgänglig från Internet, men behöver bara utgående åtkomst för att ansluta till Azure DevOps Service.
  • Om du använder TFS/Azure DevOps Server som distribuerats i ett virtuellt nätverk kan agenten isoleras helt.
  • Byggagenten måste konfigureras med DNS-konfigurationen för den webbapp som den behöver distribueras till. De privata resurserna i det virtuella nätverket har inte poster i Azure DNS, så detta måste läggas till i värdens fil på agentdatorn.
  • Om ett självsignerat certifikat används för ASE-konfigurationen måste alternativet -allowUntrusted anges i distributionsuppgiften för MSDeploy. Vi rekommenderar också att du anger variabeln VSTS_ARM_REST_IGNORE_SSL_ERRORS till true. Om ett certifikat från en certifikatutfärdare används för ASE-konfiguration bör detta inte vara nödvändigt.

Hur ska jag konfigurera min tjänstanslutning?

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

Hur ska jag konfigurera distribution av webbjobb med Application Insights?

Om du har Application Insights konfigurerats och du har aktiverat Remove additional files at destinationmåste du även aktivera Exclude files from the App_Data foldernär du distribuerar till en App Service. 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 Application Insights kontinuerliga webbjobb är installerat i mappen App_Data.

Hur ska jag konfigurera 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.

Exempel

Följande är ett exempel på ETT YAML-kodfragment för att distribuera webbprogram till Azure Web App Service som körs i Windows.

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

steps:

- task: AzureWebApp@1
  displayName: Azure Web App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplewebapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Om du vill distribuera Webbapp i Linux lägger du till parametern appType och ställer in den på appType: webAppLinux.

Om du 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 det inte anges är auto standardvärdet.

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
kräver Ingen
funktioner Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet.
Kommandobegränsningar Någon
variabler som kan Någon
Agentversion 2.209.0 eller senare
Aktivitetskategori Gruppera
Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
kräver Ingen
funktioner Den här aktiviteten uppfyller inte några krav på efterföljande uppgifter i jobbet.
Kommandobegränsningar Någon
variabler som kan Någon
Agentversion 2.104.1 eller senare
Aktivitetskategori Gruppera