Delen via


AzureWebApp@1 - Azure Web App v1-taak

Met deze taak wordt een Azure-web-app voor Linux of Windows geïmplementeerd.

Syntaxis

# 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.

Ingangen

azureSubscription - Azure-abonnement
string. Vereist.

Hiermee geeft u de Azure Resource Manager-abonnementsverbinding voor de implementatie.


appType - app-type
string. Vereist. Toegestane waarden: webApp (web-app in Windows), webAppLinux (web-app op Linux).

Hiermee geeft u het type Azure-web-app op.


appName - app-naam
string. Vereist.

Hiermee geeft u de naam van een bestaande Azure App Service. Alleen app-services die zijn gebaseerd op het geselecteerde app-type, worden weergegeven.


deployToSlotOrASE - implementeren in site- of App Service Environment-
boolean. Facultatief. Gebruiken wanneer appType != "". Standaardwaarde: false.

Selecteert de optie om te implementeren naar een bestaande implementatiesite of een Azure App Service Environment.
Voor beide doelen heeft de taak een resourcegroepnaam nodig.
Als het implementatiedoel een site is, is de standaardwaarde de productiesite. Elke andere bestaande sitenaam kan ook worden opgegeven.
Als het implementatiedoel een Azure App Service Environment is, laat u de sitenaam staan als 'productie' en geeft u de naam van de resourcegroep op.


resourceGroupName - resourcegroep
string. Vereist wanneer deployToSlotOrASE = true.

De naam van de resourcegroep is vereist wanneer het implementatiedoel een implementatiesite of een Azure App Service-omgeving is.
Hiermee geeft u de Azure-resourcegroep op die de Hierboven aangegeven Azure App Service bevat.


slotName - Slot
string. Vereist wanneer deployToSlotOrASE = true. Standaardwaarde: production.

Hiermee geeft u een bestaande site op, met uitzondering van de productiesite.


package - pakket of map
string. Vereist. Standaardwaarde: $(System.DefaultWorkingDirectory)/**/*.zip.

Het bestandspad naar het pakket of de map die App Service-inhoud bevat die is gegenereerd door MSBuild, een gecomprimeerd zip-bestand of een war-bestand. Variabelen (Build | Release) en jokertekens worden ondersteund. Bijvoorbeeld $(System.DefaultWorkingDirectory)/**/*.zip of $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - map voor aangepast implementeren
string. Facultatief. Gebruiken wanneer package EndsWith .war.

Hiermee geeft u de naam van de aangepaste map waarnaar u wilt implementeren.
Als het veld leeg is, wordt het pakket geïmplementeerd in <appname>.azurewebsites.net/<warpackagename>.
Als ROOT is ingevoerd, wordt het pakket geïmplementeerd in <appname>.azurewebsited.net.
In alle andere gevallen wordt deze geïmplementeerd in <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Runtime-stack
string. Facultatief. Gebruiken wanneer appType = webAppLinux.

Web App op Linux biedt twee verschillende opties voor het publiceren van uw toepassing: aangepaste implementatie van installatiekopieën (Web App for Containers) en app-implementatie met een ingebouwde platforminstallatiekopie (Web App op Linux). Deze parameter is alleen beschikbaar wanneer Linux-web-app is geselecteerd als een app-type in de taak.


startUpCommand - opdracht Opstarten
string. Facultatief. Gebruiken wanneer appType = webAppLinux.

Hiermee geeft u de opstartopdracht.
Bijvoorbeeld:
dotnet run
dotnet filename.dll.


customWebConfig - parameters genereren web.config voor Python-, Node.js-, Go- en Java-apps
string. Facultatief. Gebruiken wanneer appType != webAppLinux && package NotEndsWith .war.

Er wordt een standaard web.config gegenereerd en geïmplementeerd in Azure App Service als de toepassing er geen heeft. De waarden in web.config variëren op basis van het toepassingsframework en kunnen worden bewerkt. Voor de node.js-toepassing heeft web.config bijvoorbeeld een opstartbestand en iis_node modulewaarden. Deze bewerkingsfunctie is alleen bedoeld voor de gegenereerde web.config.


appSettings - app-instellingen
string.

Geef de instellingen van de web-app-toepassing op met behulp van de syntaxis -key value (bijvoorbeeld: -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE). Plaats waarden tussen spaties tussen dubbele aanhalingstekens (bijvoorbeeld: "Eastern Standard Time").


configurationStrings - Configuratie-instellingen
string.

Geef de configuratie-instellingen voor de web-app op met behulp van de syntaxis -key value (bijvoorbeeld: -phpVersion 5.6-linuxFxVersion: node|6.11). Plaats waarden tussen spaties tussen dubbele aanhalingstekens.


deploymentMethod - implementatiemethode
string. Vereist wanneer appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Toegestane waarden: auto (automatisch detecteren), zipDeploy (Zip Deploy), runFromPackage (Uitvoeren vanuit pakket). Standaardwaarde: auto.

Kies de -implementatiemethode voor de app. Acceptabele waarden zijn automatisch, zipDeploy-en runFromPackage-.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor meer informatie.

Uitvoervariabelen

Deze taak definieert de volgende uitvoervariabelen, die u kunt gebruiken in downstreamstappen, taken en fasen.

AppServiceApplicationUrl
De toepassings-URL van de geselecteerde Azure App Service.

Opmerkingen

Gebruik deze taak om webtoepassingen te implementeren in Azure App Service.

Implementatiemethoden

Er zijn verschillende implementatiemethoden beschikbaar in deze taak. Auto is de standaardoptie.

Als u de implementatieoptie op basis van pakketten in de ontwerptaak wilt wijzigen, vouwt u extra implementatieopties uit en schakelt u Implementatiemethode selecterenin.

Op basis van het type Azure App Service- en Azure Pipelines-agent kiest de taak een geschikte implementatietechnologie. De verschillende implementatietechnologieën die door de taak worden gebruikt, zijn:

  • Kudu REST API's
  • Zip Deploy
  • RunFromPackage

De taak probeert standaard de juiste implementatietechnologie te selecteren op basis van het invoerpakket, het type app-service en het agent-besturingssysteem.

  • Gebruik Zip Deploy wanneer het app-servicetype web-app is in Linux-app
  • Als er een War-bestand is opgegeven, gebruikt u War Deploy
  • Als er een JAR-bestand is opgegeven, gebruikt u Uitvoeren vanuit pakket
  • Gebruik voor alle andere Uitvoeren vanuit zip- (via Zip Deploy)

Op een niet-Windows-agent (voor elk app-servicetype) is de taak afhankelijk van Kudu REST API's om de web-app te implementeren.

Kudu REST API's

Kudu REST API's werken op Windows- of Linux-automatiseringsagents wanneer het doel Web App is in Windows, Web App op Linux (ingebouwde bron) of Functie-app. De taak maakt gebruik van Kudu om bestanden te kopiëren naar Azure App Service.

Zip Deploy

Hiermee maakt u een .zip implementatiepakket van het gekozen pakket of de gekozen map. De bestandsinhoud wordt vervolgens geïmplementeerd in de wwwroot-map van de functie-app in Azure App Service. Met deze optie worden alle bestaande inhoud in de map wwwroot overschreven. Zie Zip-implementatie voor Azure Functionsvoor meer informatie.

RunFromPackage

Hiermee maakt u hetzelfde implementatiepakket als Zip Deploy. In plaats van bestanden te implementeren in de wwwroot-map, wordt het hele pakket echter gekoppeld door de Azure Functions-runtime. Met deze optie worden bestanden in de map wwwroot alleen-lezen. Zie Uw Azure Functions uitvoeren vanuit een pakketbestandvoor meer informatie.

Fout: kan het toegangstoken voor Azure niet ophalen. Controleer of de gebruikte service-principal geldig is en niet is verlopen.

De taak gebruikt de service-principal in de serviceverbinding om te verifiëren met Azure. Als de service-principal is verlopen of geen machtigingen heeft voor de App Service, mislukt de taak met deze fout. Controleer de geldigheid van de gebruikte service-principal en of deze aanwezig is in de app-registratie. Zie Op rollen gebaseerd toegangsbeheer gebruiken voor het beheren van de toegang tot uw Azure-abonnementsresourcesvoor meer informatie. Dit blogbericht bevat ook meer informatie over het gebruik van service-principalverificatie.

SSL-fout

Als u een certificaat in App Service wilt gebruiken, moet het certificaat worden ondertekend door een vertrouwde certificeringsinstantie. Als uw web-app u certificaatvalidatiefouten geeft, gebruikt u waarschijnlijk een zelfondertekend certificaat. Stel een variabele met de naam VSTS_ARM_REST_IGNORE_SSL_ERRORS in op de waarde true in de build- of release-pijplijn om de fout op te lossen.

Een release loopt lang vast en mislukt

Dit probleem kan het gevolg zijn van onvoldoende capaciteit in uw App Service-plan. U kunt dit probleem oplossen door het App Service-exemplaar omhoog te schalen om de beschikbare CPU, RAM en schijfruimte te vergroten of een ander App Service-plan te gebruiken.

5xx foutcodes

Als u een fout van 5xx ziet, de status van uw Azure-service controleren.

Azure Function werkt plotseling niet meer

Azure Functions werkt mogelijk plotseling niet meer als er meer dan één jaar is verstreken sinds de laatste implementatie. Als u implementeert met 'RunFromPackage' in 'deploymentMethod', wordt een SAS met een vervaldatum van 1 jaar gegenereerd en ingesteld als de waarde 'WEBSITE_RUN_FROM_PACKAGE' in de toepassingsconfiguratie. Azure Functions gebruikt deze SAS om te verwijzen naar het pakketbestand voor de uitvoering van de functie. Als de SAS is verlopen, wordt de functie dus niet uitgevoerd. U kunt dit probleem oplossen door opnieuw te implementeren om een SAS te genereren met een vervaldatum van één jaar.

Fout: Er is geen pakket gevonden met het opgegeven patroon

Controleer of het pakket dat in de taak wordt vermeld, is gepubliceerd als een artefact in de build of een vorige fase en is gedownload in de huidige taak.

Fout: Publiceren met de optie zip deploy wordt niet ondersteund voor het pakkettype msBuild

Webpakketten die zijn gemaakt via de MSBuild-taak (met standaardargumenten) hebben een geneste mapstructuur die alleen correct kan worden geïmplementeerd door Web Deploy. De implementatieoptie publiceren naar zip kan niet worden gebruikt om deze pakketten te implementeren. Voer de volgende stappen uit om de verpakkingsstructuur te converteren:

  1. Wijzig in de taak Oplossing bouwen de MSBuild-argumenten in /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Schermopname met de waarden van de build-oplossing.

  2. Voeg een archieftaak toe en wijzig de waarden als volgt:

    1. Wijzig hoofdmap of bestand om te archiveren in $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Schakel het selectievakje naam van de hoofdmap vooraf opgeven om paden te archiveren in:

      schermopname met de archiefwaarden.

Veelgestelde vragen

Wat is het verschil tussen de AzureWebApp en AzureRmWebAppDeployment taken?

De Azure-web-app-taak (AzureWebApp) is de eenvoudigste manier om te implementeren in een Azure-web-app. Uw implementatie gebeurt standaard met de hoofdtoepassing in de Azure-web-app.

De Azure App Service Deploy-taak (AzureRmWebAppDeployment) meer aangepaste scenario's kan verwerken, zoals:

Notitie

Bestandstransformaties en het vervangen van variabelen worden ook ondersteund door de afzonderlijke taak Bestandstransformatie voor gebruik in Azure Pipelines. U kunt de taak Bestandstransformatie gebruiken om bestandstransformaties en variabele vervangingen toe te passen op configuratie- en parameterbestanden.

Implementatie van web-apps in Windows is geslaagd, maar de app werkt niet

Dit kan zijn omdat web.config niet aanwezig is in uw app. U kunt een web.config bestand toevoegen aan uw bron of er automatisch een genereren met toepassings- en configuratie-instellingen.

  • Klik op de taak en ga naar Parameters genereren web.config voor Python, Node.js, Go- en Java-apps.

    schermopname van het dialoogvenster Parameters genereren web.config.

  • Klik op de knop Meer ... om de parameters te bewerken.

    Schermopname van het vervolgkeuzedialoogvenster.

  • Selecteer uw toepassingstype in de vervolgkeuzelijst.

  • Klik op OK. Hiermee worden de web.config parameters ingevuld die nodig zijn om web.configte genereren.

Implementatie van web-apps in App Service Environment (ASE) werkt niet

  • Zorg ervoor dat de Azure DevOps-buildagent zich op hetzelfde VNET (subnet) bevindt als de Interne Load Balancer (ILB) van ASE. Hierdoor kan de agent code ophalen uit Azure DevOps en implementeren naar ASE.
  • Als u Azure DevOps gebruikt, hoeft de agent niet toegankelijk te zijn vanaf internet, maar alleen uitgaande toegang nodig om verbinding te maken met Azure DevOps Service.
  • Als u TFS/Azure DevOps Server gebruikt die is geïmplementeerd in een virtueel netwerk, kan de agent volledig worden geïsoleerd.
  • De buildagent moet worden geconfigureerd met de DNS-configuratie van de web-app waarop deze moet worden geïmplementeerd. De privé-resources in het virtuele netwerk bevatten geen vermeldingen in Azure DNS. Dit moet dus worden toegevoegd aan het bestand van de host op de agentcomputer.
  • Als een zelfondertekend certificaat wordt gebruikt voor de ASE-configuratie, moet de optie -allowUntrusted worden ingesteld in de implementatietaak voor MSDeploy. Het wordt ook aanbevolen om de variabele VSTS_ARM_REST_IGNORE_SSL_ERRORS in te stellen op true. Als een certificaat van een certificeringsinstantie wordt gebruikt voor de ASE-configuratie, is dit niet nodig.

Hoe moet ik mijn serviceverbinding configureren?

Voor deze taak is een Azure Resource Manager-serviceverbindingvereist.

Hoe moet ik de implementatie van webtaken configureren met Application Insights?

Wanneer u implementeert in een App Service, moet u ook Exclude files from the App_Data folderinschakelen als u Application Insights hebt geconfigureerd en u Remove additional files at destinationhebt ingeschakeld. Als u deze optie inschakelt, blijft de Application Insights-extensie veilig. Deze stap is vereist omdat de continue webtaak van Application Insights is geïnstalleerd in de map App_Data.

Hoe moet ik mijn agent configureren als deze zich achter een proxy bevindt terwijl ik implementeer in App Service?

Als uw zelf-hostende agent een webproxy vereist, kunt u de agent informeren over de proxy tijdens de configuratie. Hierdoor kan uw agent via de proxy verbinding maken met Azure Pipelines of Azure DevOps Server. Meer informatie over het uitvoeren van een zelf-hostende agent achter een webproxy.

Voorbeelden

Hieronder volgt een voorbeeld van een YAML-fragment voor het implementeren van een webtoepassing in de Azure Web App Service die wordt uitgevoerd in 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

Als u Web App wilt implementeren in Linux, voegt u de parameter appType toe en stelt u deze in op appType: webAppLinux.

Als u de implementatiemethode wilt opgeven als Zip Deploy, voegt u de parameter deploymentMethod: zipDeploytoe. Een andere ondersteunde waarde voor deze parameter is runFromPackage.

Als dit niet is opgegeven, is auto de standaardwaarde.

Eisen

Eis Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
eisen Geen
mogelijkheden Deze taak voldoet niet aan de vereisten voor volgende taken in de taak.
opdrachtbeperkingen Enig
variabelen instellen Enig
Agentversie 2.209.0 of hoger
Taakcategorie Implementeren
Eis Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
eisen Geen
mogelijkheden Deze taak voldoet niet aan de vereisten voor volgende taken in de taak.
opdrachtbeperkingen Enig
variabelen instellen Enig
Agentversie 2.104.1 of hoger
Taakcategorie Implementeren