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.net
bereitgestellt.
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:
Ä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"
:Fügen Sie eine Archivaufgabe hinzu, und ändern Sie die Werte wie folgt:
Ändern Sie Stammordner oder -datei, um in
$(System.DefaultWorkingDirectory)\\WebAppContent
zu archivieren.Deaktivieren Sie den Namen des Voreingestellten Stammordners, um Pfade Kontrollkästchen zu archivieren:
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.:
- Ändern von Konfigurationseinstellungen in Webpaketen und XML-Parameterdateien.
- Mit Web Deploybereitstellen, wenn Sie für den IIS-Bereitstellungsprozess verwendet werden.
- Bereitstellen in virtuellen Anwendungen.
- Stellen Sie für andere App-Typen bereit, z. B. Container-Apps, Funktions-Apps, WebJobs oder API- und Mobile-Apps.
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.
Klicken Sie auf die Schaltfläche "Weitere"
...
, um die Parameter zu bearbeiten.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 VariableVSTS_ARM_REST_IGNORE_SSL_ERRORS
auftrue
festzulegen. 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 destination
aktiviert haben, müssen Sie auch Exclude files from the App_Data folder
aktivieren, wenn Sie Remove additional files at destination
in 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: webAppLinux
fest.
Um die Bereitstellungsmethode als Zip Deploy anzugeben, fügen Sie den Parameter deploymentMethod: zipDeploy
hinzu. 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 |