AzureWebApp@1 – Azure Web App v1-Aufgabe

Mit dieser Aufgabe wird eine Azure-Web-App für Linux oder Windows bereitgestellt.

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.

Eingaben

azureSubscription - Azure-Abonnement
string. Erforderlich.

Gibt die Azure Resource Manager-Abonnementverbindung für die Bereitstellung an.


appType - App-Typ
string. Erforderlich. Zulässige Werte: webApp (Web-App unter Windows), webAppLinux (Web-App unter Linux).

Gibt den Azure-Web-App-Typ an.


appName - App-Name
string. Erforderlich.

Gibt den Namen einer vorhandenen Azure App Service an. Es werden nur App-Dienste aufgelistet, die auf dem ausgewählten App-Typ basieren.


deployToSlotOrASE - Bereitstellen im Slot oder App Service-Umgebung
boolean. Optional. Verwenden Sie , wenn appType != "". Standardwert. false.

Wählt die Option aus, die in einem vorhandenen Bereitstellungsslot oder einer Azure App Service Umgebung bereitgestellt werden soll.
Für beide Ziele benötigt die Aufgabe einen Ressourcengruppennamen.
Wenn das Bereitstellungsziel ein Slot ist, ist der Standard der Produktionsslot. Es kann auch ein beliebiger anderer Slotname angegeben werden, der vorhanden ist.
Wenn es sich bei dem Bereitstellungsziel um eine Azure App Service-Umgebung handelt, lassen Sie den Slotnamen "Produktion" und geben Sie den Namen der Ressourcengruppe an.


resourceGroupName - Ressourcengruppe
string. Erforderlich, wenn deployToSlotOrASE = true.

Der Ressourcengruppenname ist erforderlich, wenn das Bereitstellungsziel entweder ein Bereitstellungsslot oder ein Azure App Service Umgebung ist.
Gibt die Azure-Ressourcengruppe an, die die oben angegebene Azure App Service enthält.


slotName - Slot
string. Erforderlich, wenn deployToSlotOrASE = true. Standardwert. production.

Gibt einen vorhandenen Slot mit Ausnahme des Produktionsslots an.


package - Paket oder Ordner
string. Erforderlich. Standardwert. $(System.DefaultWorkingDirectory)/**/*.zip.

Der Dateipfad zu dem Paket oder Ordner, der App Service von MSBuild generierten Inhalt, eine komprimierte ZIP-Datei oder eine Kriegsdatei enthält. Variablen ( Build | release) und Wildcards werden unterstützt. Zum Beispiel: $(System.DefaultWorkingDirectory)/**/*.zip oder $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - Benutzerdefinierter Bereitstellungsordner
string. Optional. Verwenden Sie , wenn package EndsWith .war.

Gibt den Namen des benutzerdefinierten Ordners an, in dem Sie bereitstellen möchten.
Wenn das Feld leer ist, wird das Paket in <appname>.azurewebsites.net/<warpackagename>bereitgestellt.
Wenn ROOT eingegeben wird, wird das Paket in <appname>.azurewebsited.netbereitgestellt.
In allen anderen Instanzen wird sie in <appname>.azurewebsited.net/<customWarName>bereitgestellt.


runtimeStack - Laufzeitstapel
string. Optional. Verwenden Sie , wenn appType = webAppLinux.

Web-App unter Linux bietet zwei verschiedene Optionen zum Veröffentlichen Ihrer Anwendung: Bereitstellung eines benutzerdefinierten Images (Web-App für Container) und App-Bereitstellung mit einem integrierten Plattformimage (Web-App unter Linux). Dieser Parameter ist nur verfügbar, wenn die Linux-Web-App als App-Typ in der Aufgabe ausgewählt ist.


startUpCommand - Startbefehl
string. Optional. Verwenden Sie , wenn appType = webAppLinux.

Gibt den Startbefehl an.
Beispiel:
dotnet run
dotnet filename.dll.


customWebConfig - Generieren web.config Parameter für Python-, Node.js-, Go- und Java-Apps
string. Optional. Verwenden Sie , wenn appType != webAppLinux && package NotEndsWith .war.

Eine Standard-web.config wird generiert und in Azure App Service bereitgestellt, sofern die Anwendung keines hat. Die Werte in web.config je nach Anwendungsframework variieren und können bearbeitet werden. Für die node.js Anwendung verfügen web.config beispielsweise über eine Startdatei und iis_node Modulwerte. Dieses Bearbeitungsfeature gilt nur für die generierte web.config.


appSettings - App-Einstellungen
string.

Geben Sie die Web-App-Anwendungseinstellungen mithilfe der Syntax -key value an (z. B.:-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Schließen Sie Werte ein, die Leerzeichen in doppelten Anführungszeichen enthalten (z. B.: "Eastern Standard Time").


configurationStrings - Konfigurationseinstellungen
string.

Geben Sie die Konfigurationseinstellungen der Web-App mithilfe der Syntax -key value an (z. B. ). -phpVersion 5.6-linuxFxVersion: node|6.11 Schließen Sie Werte ein, die Leerzeichen in doppelten Anführungszeichen enthalten.


deploymentMethod - Bereitstellungsmethode
string. Erforderlich, wenn appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Zulässige Werte: auto (Automatische Erkennung), zipDeploy (Zip Deploy), runFromPackage (Aus Paket ausführen). Standardwert. auto.

Wählen Sie die Bereitstellungsmethode für die App aus. Zulässige Werte sind auto, zipDeploy und runFromPackage.


Optionen für die Vorgangskontrolle

Alle Vorgänge verfügen zusätzlich zu ihren Eingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.

Ausgabevariablen

Diese Aufgabe definiert die folgenden Ausgabevariablen, die Sie in nachgelagerten Schritten, Aufträgen und Phasen nutzen können.

AppServiceApplicationUrl
Die Anwendungs-URL des ausgewählten Azure App Service.

Hinweise

Verwenden Sie diese Aufgabe, um Webanwendungen in Azure App Service bereitzustellen.

Bereitstellungsmethoden

In dieser Aufgabe stehen mehrere Bereitstellungsmethoden zur Verfügung. Auto ist die Standardoption.

Um die paketbasierte Bereitstellungsoption im Designertask zu ändern, erweitern Sie Zusätzliche Bereitstellungsoptionen , und aktivieren Sie Bereitstellungsmethode auswählen.

Basierend auf dem Typ der Azure App Service und des Azure Pipelines-Agents wählt die Aufgabe eine geeignete Bereitstellungstechnologie aus. Die verschiedenen Bereitstellungstechnologien, die von der Aufgabe verwendet werden, sind:

  • Kudu-REST-APIs
  • ZIP-Bereitstellung
  • RunFromPackage

Standardmäßig versucht der Task, die entsprechende Bereitstellungstechnologie unter Berücksichtigung des Eingabepakets, des App Service-Typs und des Agentbetriebssystems auszuwählen.

  • Wenn der App Service-Typ Web-App unter Linux-App ist, verwenden Sie Zip Deploy
  • Wenn eine War-Datei bereitgestellt wird, verwenden Sie War Deploy
  • Wenn eine JAR-Datei bereitgestellt wird, verwenden Sie Aus Paket ausführen.
  • Verwenden Sie für alle anderen Run From Zip (via Zip Deploy)

Bei einem Nicht-Windows-Agent (für jeden App-Diensttyp) ist die Aufgabe auf Kudu-REST-APIs angewiesen, um die Web-App bereitzustellen.

Kudu REST APIs

Kudu-REST-APIs funktionieren auf Windows- oder Linux-Automatisierungs-Agents, wenn das Ziel Web-App unter Windows, Web-App unter Linux (integrierte Quelle) oder Funktions-App ist. Der Task verwendet Kudu, um Dateien in die Azure App Service zu kopieren.

ZIP-Bereitstellung

Erstellt ein .zip Bereitstellungspaket des ausgewählten Pakets oder Ordners. Die Dateiinhalte werden dann im Ordner wwwroot der Funktions-App in Azure App Service bereitgestellt. Diese Option überschreibt alle vorhandenen Inhalte im Ordner wwwroot. Weitere Informationen finden Sie unter ZIP-Bereitstellung für Azure Functions.

RunFromPackage

Erstellt das gleiche Bereitstellungspaket wie die ZIP-Bereitstellung. Anstatt jedoch Dateien im Ordner wwwroot bereitzustellen, wird das gesamte Paket von der Azure Functions Runtime eingebunden. Mit dieser Option werden Dateien im Ordner wwwroot schreibgeschützt. Weitere Informationen finden Sie unter Run your Azure Functions from a package file (Ausführen von Azure Functions über eine Paketdatei).

Fehler: Das Zugriffstoken für Azure konnte nicht abgerufen werden. Stellen Sie sicher, dass der verwendete Dienstprinzipal gültig und nicht abgelaufen ist.

Die Aufgabe verwendet den Dienstprinzipal in der Dienstverbindung für die Authentifizierung bei Azure. Wenn der Dienstprinzipal abgelaufen ist oder über keine Berechtigungen für den App Service verfügt, schlägt die Aufgabe mit diesem Fehler fehl. Überprüfen Sie die Gültigkeit des verwendeten Dienstprinzipals, und vergewissern Sie sich, dass er in der App-Registrierung vorhanden ist. Weitere Informationen finden Sie unter Verwalten des Zugriffs auf Ihre Azure-Abonnementressourcen mithilfe der rollenbasierten Zugriffssteuerung. Dieser Blogbeitrag enthält auch weitere Informationen zur Verwendung der Dienstprinzipalauthentifizierung.

SSL-Fehler

Wenn Sie ein Zertifikat im App Service verwenden möchten, muss das Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert werden. Wenn Ihre Web-App Zertifikatüberprüfungsfehler meldet, verwenden Sie wahrscheinlich ein selbstsigniertes Zertifikat. Legen Sie eine Variable mit dem Namen VSTS_ARM_REST_IGNORE_SSL_ERRORS auf den Wert true in der Build- oder Releasepipeline fest, um den Fehler zu beheben.

Ein Release bleibt für längere Zeit hängen und wird dann nicht erfolgreich abgeschlossen.

Dieses Problem kann das Ergebnis unzureichender Kapazität in Ihrem App Service Plan sein. Zur Behebung dieses Problems können Sie die App Service-Instanz hochskalieren, um die verfügbare CPU-, RAM- und Speicherplatzkapazität zu erhöhen, oder einen anderen App Service-Plan verwenden.

Fehlercodes vom Typ 5xx

Wenn ein 5xx-Fehler angezeigt wird, überprüfen Sie die status Ihres Azure-Diensts.

Azure-Funktion funktioniert plötzlich nicht mehr

Azure Functions funktioniert möglicherweise plötzlich nicht mehr, wenn seit der letzten Bereitstellung mehr als ein Jahr vergangen ist. Wenn Sie mit "RunFromPackage" in "deploymentMethod" bereitstellen, wird eine SAS mit einem Ablaufdatum von 1 Jahr generiert und als Wert von "WEBSITE_RUN_FROM_PACKAGE" in der Anwendungskonfiguration festgelegt. Azure Functions verwendet diese SAS, um auf die Paketdatei für die Funktionsausführung zu verweisen. Wenn die SAS also abgelaufen ist, wird die Funktion nicht ausgeführt. Um dieses Problem zu beheben, stellen Sie erneut bereit, um eine SAS mit einem Ablaufdatum von einem Jahr zu generieren.

Fehler: Keine Paketdatei mit dem angegebenen Muster gefunden.

Überprüfen Sie, ob das in der Aufgabe angegebene Paket als Artefakt in der Buildphase oder in einer vorherigen Phase veröffentlicht und im aktuellen Auftrag heruntergeladen wurde.

Fehler: Die Veröffentlichung über die ZIP-Bereitstellungsoption wird für den msBuild-Pakettyp nicht unterstützt.

Webpakete, die mit der MSBuild-Aufgabe (mit Standardargumenten) erstellt werden, haben eine geschachtelte Ordnerstruktur, die nur von Web Deploy ordnungsgemäß bereitgestellt werden kann. Diese Pakete können nicht mithilfe der Bereitstellungsoption „publish-to-zip“ bereitgestellt werden. Befolgen Sie die nachstehenden Schritte, um die Paketstruktur zu konvertieren:

  1. Ändern Sie in der Build-Lösungsaufgabe die MSBuild-Argumente in /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Screenshot mit den Build-Lösungswerten.

  2. Fügen Sie eine Archivaufgabe hinzu, und ändern Sie die Werte wie folgt:

    1. Ändern Sie den Stammordner oder die zu archivierende Datei in $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Deaktivieren Sie das Kontrollkästchen Name des Stammordners den Archivpfaden voranstellen:

      Screenshot, der die Archivwerte zeigt.

Häufig gestellte Fragen

Was ist der Unterschied zwischen den AzureWebApp Aufgaben und AzureRmWebAppDeployment ?

Die Azure-Web-App-Aufgabe (AzureWebApp) ist die einfachste Möglichkeit zum Bereitstellen in einer Azure-Web-App. Standardmäßig erfolgt Ihre Bereitstellung in der Stammanwendung in der Azure-Web-App.

Der Azure App Service Task Bereitstellen (AzureRmWebAppDeployment) kann mehr benutzerdefinierte Szenarien verarbeiten, z. B.:

Hinweis

Dateitransformationen und das Ersetzen von Variablen werden auch von der separaten Dateitransformationsaufgabe zur Verwendung in Azure Pipelines unterstützt. Sie können die Dateitransformationsaufgabe verwenden, um Dateitransformationen und Variablenersetzungen auf beliebige Konfigurations- und Parameterdateien anzuwenden.

Die Web-App-Bereitstellung unter Windows ist erfolgreich, aber die App funktioniert nicht.

Eine mögliche Ursache besteht darin, dass „web.config“ nicht in Ihrer App vorhanden ist. Sie können ihrer Quelle entweder eine web.config-Datei hinzufügen oder mithilfe der Anwendungs- und Konfigurationseinstellungen automatisch generieren.

  • Klicken Sie auf die Aufgabe, und wechseln Sie zu Generieren von web.config Parametern für Python-, Node.js-, Go- und Java-Apps.

    Screenshot des Dialogfelds

  • Klicken Sie auf die Schaltfläche ... Mehr, um die Parameter zu bearbeiten.

    Screenshot des Dropdowndialogfelds.

  • Wählen Sie in der Dropdownliste Ihren Anwendungstyp aus.

  • Klicken Sie auf OK. Dadurch werden die web.config Parameter aufgefüllt, die zum Generieren von web.config erforderlich sind.

Die Web-App-Bereitstellung in der App Service-Umgebung (App Service Environment, ASE) funktioniert nicht.

  • Stellen Sie sicher, dass sich der Azure DevOps-Build-Agent im gleichen VNET befindet (Subnetz kann unterschiedlich sein) wie der interne Load Balancer (ILB) von ASE. Dadurch kann der Agent Code aus Azure DevOps abrufen und in ASE bereitstellen.
  • Wenn Sie Azure DevOps verwenden, muss der Agent nicht über das Internet zugänglich sein, sondern benötigt nur ausgehenden Zugriff, um eine Verbindung mit Azure DevOps Service herzustellen.
  • Wenn Sie TFS/Azure DevOps Server verwenden, die in einem virtuellen Netzwerk bereitgestellt werden, kann der Agent vollständig isoliert werden.
  • Der Build-Agent muss mit der DNS-Konfiguration der Web-App konfiguriert werden, für die die Bereitstellung erforderlich ist. Die privaten Ressourcen im Virtual Network haben keine Einträge in Azure DNS. Daher muss dies der Hostdatei auf dem Agentcomputer hinzugefügt werden.
  • Wenn ein selbstsigniertes Zertifikat für die ASE-Konfiguration verwendet wird, muss die -allowUntrusted Option in der Bereitstellungsaufgabe für MSDeploy festgelegt werden. Es wird auch empfohlen, die Variable VSTS_ARM_REST_IGNORE_SSL_ERRORS auf festzulegen true. Wenn ein Zertifikat einer Zertifizierungsstelle für die ASE-Konfiguration verwendet wird, sollte dies nicht erforderlich sein.

Wie sollte ich meine Dienstverbindung konfigurieren?

Diese Aufgabe erfordert eine Azure Resource Manager-Dienstverbindung.

Wie sollte ich die Webauftragsbereitstellung mit Application Insights konfigurieren?

Wenn Sie die Bereitstellung in einem App Service durchführen, müssen Sie auch aktivieren, wenn Sie Application InsightsRemove additional files at destination konfiguriert und aktiviert Exclude files from the App_Data folderhaben. Wenn Sie diese Option aktivieren, bleibt die Application Insights-Erweiterung in einem sicheren Zustand. Dieser Schritt ist erforderlich, da der fortlaufende Application Insights-WebJob im Ordner App_Data installiert ist.

Wie sollte ich meinen Agent bei einer Bereitstellung in App Service konfigurieren, wenn er sich hinter einem Proxy befindet?

Wenn für Ihren selbstgehosteten Agent ein Webproxy erforderlich ist, können Sie den Agent während der Konfiguration über den Proxy informieren. Dadurch kann Ihr Agent über den Proxy eine Verbindung mit Azure Pipelines oder Azure DevOps Server herstellen. Erfahren Sie mehr über das Ausführen eines selbstgehosteten Agents hinter einem Webproxy.

Beispiele

Im Folgenden finden Sie einen YAML-Beispielausschnitt zum Bereitstellen einer Webanwendung in der Azure-Web-App Service, die unter Windows ausgeführt wird.

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

Fügen Sie zum Bereitstellen der Web-App unter Linux den appType Parameter hinzu, und legen Sie ihn auf fest appType: webAppLinux.

Um die Bereitstellungsmethode als Zip Deploy anzugeben, fügen Sie den Parameter deploymentMethod: zipDeployhinzu. Ein weiterer unterstützter Wert für diesen Parameter ist runFromPackage.

Wenn nicht angegeben, auto ist der Standardwert.

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, Klassischer Build, klassisches Release
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Keine
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Any
Einstellbare Variablen Any
Agent-Version 2.104.1 oder höher
Aufgabenkategorie Bereitstellen