AzureWebApp@1 – Azure Web App v1-Aufgabe

Diese Aufgabe stellt eine Azure Web App für Linux oder Windows bereit.

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.

Eingänge

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 eines 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 Environment-
boolean. Wahlfrei. Wird verwendet, wenn appType != "". Standardwert: false.

Wählt die Option zum Bereitstellen in einem vorhandenen Bereitstellungsplatz oder einer Azure App Service-Umgebung aus.
Für beide Ziele benötigt der Vorgang einen Ressourcengruppennamen.
Wenn das Bereitstellungsziel ein Slot ist, ist der Standardwert der Produktionsplatz. Alle anderen vorhandenen Slotnamen können ebenfalls bereitgestellt werden.
Wenn es sich bei dem Bereitstellungsziel um eine Azure App Service-Umgebung handelt, lassen Sie den Slotnamen als "Produktion" und geben Sie den Ressourcengruppennamen an.


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

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


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

Gibt einen vorhandenen Steckplatz mit Ausnahme des Produktionsplatzes an.


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

Der Dateipfad zum Paket oder Ordner, das App Service-Inhalte enthält, die von MSBuild, einer komprimierten ZIP-Datei oder einer Kriegsdatei generiert werden. Variablen ( Build | Release) und Wildcards werden unterstützt. Beispiel: $(System.DefaultWorkingDirectory)/**/*.zip oder $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - benutzerdefinierten Bereitstellungsordner-
string. Wahlfrei. Wird verwendet, wenn package EndsWith .war.

Gibt den benutzerdefinierten Ordnernamen an, für den Sie bereitstellen möchten.
Wenn das Feld leer ist, wird das Paket für <appname>.azurewebsites.net/<warpackagename>bereitgestellt.
Wenn ROOT eingegeben wird, wird das Paket für <appname>.azurewebsited.netbereitgestellt.
In allen anderen Fällen wird sie für <appname>.azurewebsited.net/<customWarName>bereitgestellt.


runtimeStack - Runtime-Stapel-
string. Wahlfrei. Wird verwendet, wenn appType = webAppLinux.

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


startUpCommand - Startbefehl
string. Wahlfrei. Wird verwendet, wenn appType = webAppLinux.

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


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

Ein Standard-web.config wird generiert und in Azure App Service bereitgestellt, wenn die Anwendung nicht über eine verfügt. Die Werte in web.config variieren je nach Anwendungsframework und können bearbeitet werden. Für die node.js Anwendung verfügt web.config beispielsweise über eine Startdatei und iis_node Modulwerte. Dieses Bearbeitungsfeature ist nur für die generierten web.config.


appSettings - App-Einstellungen
string.

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


configurationStrings - Konfigurationseinstellungen
string.

Geben Sie die Web App-Konfigurationseinstellungen mithilfe der Syntax -key value an (z. B. -phpVersion 5.6-linuxFxVersion: node|6.11). Schließen Sie Werte ein, die Leerzeichen in doppelte 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 (Von Paket ausführen). Standardwert: auto.

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


Aufgabensteuerungsoptionen

Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerelementoptionen und allgemeinen Aufgabeneigenschaften.

Ausgabevariablen

Mit dieser Aufgabe werden die folgenden Ausgabevariablendefiniert, die Sie in nachgeschalteten Schritten, Aufträgen und Phasen verwenden können.

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

Bemerkungen

Verwenden Sie diese Aufgabe, um Webanwendungen für Azure App Service bereitzustellen.

Bereitstellungsmethoden

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

Um die paketbasierte Bereitstellungsoption in der Designeraufgabe zu ändern, erweitern Sie zusätzliche Bereitstellungsoptionen, und aktivieren Sie Select Deployment Method.

Basierend auf dem Typ des Azure App Service- und 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 Deploy
  • RunFromPackage

Standardmäßig versucht die Aufgabe, die entsprechende Bereitstellungstechnologie im Hinblick auf das Eingabepaket, den App-Diensttyp und das Agentbetriebssystem auszuwählen.

  • Wenn der App-Diensttyp Web App unter Linux-App ist, verwenden Sie Zip Deploy
  • Wenn eine Kriegsdatei bereitgestellt wird, verwenden Sie War Deploy
  • Wenn eine Jar-Datei bereitgestellt wird, verwenden Sie Ausführen von Package-
  • Verwenden Sie für alle anderen Ausführen von ZIP- (über Zip Deploy)

Bei einem Nicht-Windows-Agent (für jeden App-Diensttyp) basiert die Aufgabe auf Kudu-REST-APIs zum Bereitstellen der Web-App.

Kudu-REST-APIs

Kudu-REST-APIs an Windows- oder Linux-Automatisierungs-Agents arbeiten, wenn das Ziel Web App unter Windows, Web App unter Linux (integrierte Quelle) oder Funktions-App ist. Die Aufgabe verwendet Kudu, um Dateien in den Azure App Service zu kopieren.

Zip Deploy

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

RunFromPackage

Erstellt das gleiche Bereitstellungspaket wie zip Deploy. Anstatt jedoch Dateien im Wwwroot-Ordner bereitzustellen, wird das gesamte Paket von der Azure Functions-Laufzeit bereitgestellt. Mit dieser Option werden Dateien im Ordner "wwwroot" schreibgeschützt. Weitere Informationen finden Sie unter Ausführen Ihrer Azure-Funktionen aus einer Paketdatei.

Fehler: Zugriffstoken für Azure konnte nicht abgerufen werden. Überprüfen Sie, ob der verwendete Dienstprinzipal gültig und nicht abgelaufen ist.

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

SSL-Fehler

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

Eine Freigabe hängt lange und schlägt dann fehl.

Dieses Problem könnte das Ergebnis unzureichender Kapazität in Ihrem App Service-Plan sein. Um dieses Problem zu beheben, können Sie die App Service-Instanz skalieren, um den verfügbaren CPU-, RAM- und Festplattenspeicher zu erhöhen, oder versuchen Sie es mit einem anderen App Service-Plan.

5xx Fehlercodes

Wenn ein 5-xx--Fehler angezeigt wird, den Status Ihres Azure-Dienstsüberprüfen.

Azure-Funktion funktionierte 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 ein SAS mit einem Ablaufdatum von 1 Jahr generiert und als Wert von "WEBSITE_RUN_FROM_PACKAGE" in der Anwendungskonfiguration festgelegt. Azure Functions verwendet dieses SAS, um auf die Paketdatei für die Funktionsausführung zu verweisen. Wenn die SAS abgelaufen ist, wird die Funktion nicht ausgeführt. Um dieses Problem zu beheben, stellen Sie es erneut bereit, um ein SAS mit einem Ablaufdatum von einem Jahr zu generieren.

Fehler: Kein Paket mit angegebenem Muster gefunden

Überprüfen Sie, ob das in der Aufgabe erwähnte Paket als Artefakt im Build oder einer vorherigen Phase veröffentlicht und in den aktuellen Auftrag heruntergeladen wird.

Fehler: Die Veröffentlichung mithilfe der ZIP-Bereitstellungsoption wird für den MsBuild-Pakettyp nicht unterstützt.

Webpakete, die über die MSBuild-Aufgabe (mit Standardargumenten) erstellt werden, weisen eine geschachtelte Ordnerstruktur auf, die nur von Web Deploy ordnungsgemäß bereitgestellt werden kann. Die Bereitstellungsoption zum Veröffentlichen in ZIP kann nicht verwendet werden, um diese Pakete bereitzustellen. Gehen Sie folgendermaßen vor, um die Verpackungsstruktur zu konvertieren:

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

    Screenshot mit den Buildlösungswerten.

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

    1. Ändern Sie Stammordner oder -datei, um in $(System.DefaultWorkingDirectory)\\WebAppContentzu archivieren.

    2. Deaktivieren Sie den Namen des Voreingestellten Stammordners, um Pfade Kontrollkästchen zu archivieren:

      Screenshot mit den Archivwerten.

Häufig gestellte Fragen

Was ist der Unterschied zwischen den aufgaben AzureWebApp 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 mit der Stammanwendung in der Azure Web App.

Die Azure App Service Deploy-Aufgabe (AzureRmWebAppDeployment) können weitere benutzerdefinierte Szenarien verarbeiten, z. B.:

Anmerkung

Dateitransformationen und Variablenersetzung werden auch von der separaten Dateitransformationsaufgabe für die Verwendung in Azure Pipelines unterstützt. Sie können die Dateitransformationsaufgabe verwenden, um Dateitransformationen und Variablenersetzungen auf alle Konfigurations- und Parameterdateien anzuwenden.

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

Dies liegt möglicherweise daran, dass web.config in Ihrer App nicht vorhanden ist. Sie können ihrer Quelle entweder eine web.config Datei hinzufügen oder eine datei automatisch generieren, indem Sie Anwendungs- und Konfigurationseinstellungenverwenden.

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

    Screenshot des Dialogfelds

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

    Screenshot des Dropdowndialogfelds.

  • Wählen Sie ihren Anwendungstyp aus der Dropdownliste aus.

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

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

  • Stellen Sie sicher, dass sich der Azure DevOps-Build-Agent auf demselben VNET befindet (Subnetz kann unterschiedlich sein) wie der interne Lastenausgleich (Internal Load Balancer, ILB) von ASE. Dadurch kann der Agent Code aus Azure DevOps abrufen und auf 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, der in einem virtuellen Netzwerk bereitgestellt wird, kann der Agent vollständig isoliert werden.
  • Der Build-Agent muss mit der DNS-Konfiguration der Web App konfiguriert werden, für die er bereitstellen muss. Die privaten Ressourcen im virtuellen Netzwerk enthalten 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 Option -allowUntrusted in der Bereitstellungsaufgabe für MSDeploy festgelegt werden. Es wird auch empfohlen, die Variable VSTS_ARM_REST_IGNORE_SSL_ERRORS auf truefestzulegen. Wenn ein Zertifikat von einer Zertifizierungsstelle für die ASE-Konfiguration verwendet wird, sollte dies nicht erforderlich sein.

Wie soll ich meine Dienstverbindung konfigurieren?

Für diese Aufgabe ist eine Azure Resource Manager-Dienstverbindungerforderlich.

Wie sollte ich die Bereitstellung von Webaufträgen mit Application Insights konfigurieren?

Wenn Sie Application Insights konfiguriert haben und Remove additional files at destinationaktiviert haben, müssen Sie auch Exclude files from the App_Data folderaktivieren, wenn Sie Remove additional files at destinationin einem App-Dienst bereitstellen. Durch Aktivieren dieser Option wird die Application Insights-Erweiterung in einem sicheren Zustand beibehalten. Dieser Schritt ist erforderlich, da der fortlaufende WebJob von Application Insights im ordner App_Data installiert ist.

Wie sollte ich meinen Agent konfigurieren, wenn er sich hinter einem Proxy befindet, während ich im App Service bereitstelle?

Wenn Ihr selbst gehosteter Agent einen Webproxy benötigt, können Sie den Agent während der Konfiguration über den Proxy informieren. Auf diese Weise kann Ihr Agent über den Proxy eine Verbindung mit Azure Pipelines oder Azure DevOps Server herstellen. Erfahren Sie mehr über das Ausführen eines selbst gehosteten Agents hinter einem Webproxy.

Beispiele

Nachfolgend sehen Sie ein Beispiel für einen YAML-Codeausschnitt zum Bereitstellen von Webanwendungen für den Azure Web App-Dienst, der 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

Um Web App unter Linux bereitzustellen, fügen Sie den parameter appType hinzu, und legen Sie ihn auf appType: webAppLinuxfest.

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, ist auto der Standardwert.

Anforderungen

Anforderung Beschreibung
Pipelinetypen YAML, Classic Build, Classic Release
Läuft auf Agent, DeploymentGroup
Anforderungen Nichts
Funktionen Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag.
Befehlseinschränkungen Jegliche
Settable-Variablen Jegliche
Agentversion 2.209.0 oder höher
Vorgangskategorie Aufstellen
Anforderung Beschreibung
Pipelinetypen YAML, Classic Build, Classic Release
Läuft auf Agent, DeploymentGroup
Anforderungen Nichts
Funktionen Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag.
Befehlseinschränkungen Jegliche
Settable-Variablen Jegliche
Agentversion 2.104.1 oder höher
Vorgangskategorie Aufstellen