AzureFunctionApp@2– Azure Functions Aufgabe "v2 bereitstellen"
Aktualisieren Sie eine Funktions-App mit .NET, Python, JavaScript, PowerShell und Java-basierten Webanwendungen.
Syntax
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection.
appType: # 'functionApp' | 'functionAppLinux'. Required. App type.
appName: # string. Required. Azure Functions 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: # 'DOTNET|6.0' | 'DOTNET-ISOLATED|6.0' | 'DOTNET-ISOLATED|7.0' | 'DOTNET-ISOLATED|8.0' | 'JAVA|8' | 'JAVA|11' | 'JAVA|17' | 'JAVA|21' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'NODE|20' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10' | 'PYTHON|3.11'. Optional. Use when appType = functionAppLinux. Runtime stack.
# Application and Configuration Settings
#appSettings: # string. App settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection.
appType: # 'functionApp' | 'functionAppLinux'. Required. App type.
appName: # string. Required. Azure Functions 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: # 'DOTNET|2.2' | 'DOTNET|3.1' | 'DOTNET|6.0' | 'DOTNET-ISOLATED|7.0' | 'JAVA|8' | 'JAVA|11' | 'NODE|8' | 'NODE|10' | 'NODE|12' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'PYTHON|3.6' | 'PYTHON|3.7' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10'. Optional. Use when appType = functionAppLinux. Runtime stack.
# Application and Configuration Settings
#appSettings: # string. App settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
Eingaben
connectedServiceNameARM
- Azure Resource Manager-Verbindung
Eingabealias: azureSubscription
. string
. Erforderlich.
Wählen Sie das Azure Resource Manager-Abonnement für die Bereitstellung aus.
appType
- App-Typ
string
. Erforderlich. Zulässige Werte: functionApp
(Funktions-App unter Windows), functionAppLinux
(Funktions-App unter Linux).
Wählen Sie den Azure-Funktions-App-Typ für die Bereitstellung aus.
appName
- Azure Functions App-Name
string
. Erforderlich.
Geben Sie den Namen einer vorhandenen Azure Functions-App an. Die aufgeführten Funktions-Apps basieren auf dem ausgewählten App-Typ.
deployToSlotOrASE
- Bereitstellen im Slot oder App Service-Umgebung
boolean
. Optional. Verwenden Sie , wenn appType != ""
. Standardwert. false
.
Wird in einem vorhandenen Bereitstellungsslot oder Azure App Service Umgebung bereitgestellt. Für beide Ziele benötigt die Aufgabe einen Ressourcengruppennamen.
Wenn das Bereitstellungsziel ein Slot ist, wird standardmäßig der Produktionsslot verwendet. Es kann auch ein beliebiger anderer Slotname angegeben werden, der vorhanden ist.
Wenn das Bereitstellungsziel eine Azure App Service Umgebung ist, behalten Sie den Slotnamen als Produktion bei, 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 App Service-Umgebung ist.
Gibt die Azure-Ressourcengruppe ein, die die oben angegebene Azure App Service enthält, oder wählt sie aus.
slotName
- Slot
string
. Erforderlich, wenn deployToSlotOrASE = true
. Standardwert. production
.
Gibt einen vorhandenen Slot mit Ausnahme des Produktionsslots ein oder wählt diese aus.
slotName
- Slot
string
. Erforderlich, wenn deployToSlotOrASE = true
. Standardwert. production
.
Geben Sie einen vorhandenen anderen Slot als den Produktionsslot ein, oder wählen Sie diese aus.
package
- Paket oder Ordner
string
. Erforderlich. Standardwert. $(System.DefaultWorkingDirectory)/**/*.zip
.
Der Dateipfad zu dem Paket oder Ordner, der App Service von MSBuild generierten Inhalt oder eine komprimierte ZIP-Datei enthält. Variablen ( Build | release) und Wildcards werden unterstützt. Beispiel: $(System.DefaultWorkingDirectory)/**/*.zip
.
runtimeStack
- Laufzeitstapel
string
. Optional. Verwenden Sie , wenn appType = functionAppLinux
. Zulässige Werte: DOTNET|6.0
, DOTNET-ISOLATED|6.0
, DOTNET-ISOLATED|7.0
, JAVA|8
DOTNET-ISOLATED|8.0
, JAVA|11
, JAVA|17
, JAVA|21
, , NODE|14
, , NODE|16
, NODE|18
, , PYTHON|3.10
NODE|20
PYTHON|3.9
PYTHON|3.8
PYTHON|3.11
.
Geben Sie das Framework und die Version an, unter der Ihre Funktions-App ausgeführt wird. Sie können jede der unterstützten Laufzeitversionen verwenden. Alte Werte wie z. B DOCKER|microsoft/azure-functions-*
. sind veraltet. Neue Werte werden in der Dropdownliste in der Aufgabe Assistent aufgeführt. Wenn eine neuere Version eines Frameworks in den unterstützten Laufzeitversionen verfügbar ist, können Sie sie auch dann angeben, wenn sie nicht in der Liste enthalten ist.
runtimeStack
- Laufzeitstapel
string
. Optional. Verwenden Sie , wenn appType = functionAppLinux
. Zulässige Werte: DOTNET|2.2
(DOTNET|2.2 (functionapp v2)), DOTNET|3.1
(DOTNET|3.1 (functionapp v3)), DOTNET|6.0
(DOTNET|6.0 (functionapp v4)), DOTNET-ISOLATED|7.0
(DOTNET-ISOLATED|7.0 (functionapp v4)), JAVA|8
(JAVA|8 (functionapp v2/v3/v4)), JAVA|11
(JAVA|11 (functionapp v3/v4)), NODE|8
(NODE|8 (functionapp v2)), NODE|10
(NODE|10 (functionapp v2/v3)), NODE|12
(NODE|12 (functionapp v3)), NODE|14
(NODE|14 (functionapp v3/v4)), NODE|16
(NODE|16 (functionapp v4)), NODE|18
(NODE|18 (functionapp v4)), PYTHON|3.6
(PYTHON|3.6 (functionapp v2/v3)), PYTHON|3.7
(PYTHON|3.7 (functionapp v2/v3/v4)), PYTHON|3.8
(PYTHON|3.8 (functionapp v3/v4)), PYTHON|3.9
(PYTHON|3.9 (functionapp v3/v4)), PYTHON|3.10
(PYTHON|3.10 (functionapp v3/v4)).
Geben Sie das Framework und die Version an, unter der Ihre Funktions-App ausgeführt wird. Sie können jede der unterstützten Laufzeitversionen verwenden. Alte Werte wie z. B DOCKER|microsoft/azure-functions-*
. sind veraltet. Neue Werte werden in der Dropdownliste in der Aufgabe Assistent aufgeführt. Wenn eine neuere Version eines Frameworks in den unterstützten Laufzeitversionen verfügbar ist, können Sie sie auch dann angeben, wenn sie nicht in der Liste enthalten ist.
appSettings
- App-Einstellungen
string
.
Geben Sie die Anwendungseinstellungen mithilfe der Syntax -key value
ein (z. B. ). -Port 5000
-RequestTimeout 5000
-WEBSITE_TIME_ZONE
Schließen Sie Werte ein, die Leerzeichen in doppelten Anführungszeichen enthalten (z. B.: "Eastern Standard Time"
).
deploymentMethod
- Bereitstellungsmethode
string
. Erforderlich, wenn appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Zulässige Werte: auto
(Auto-Detect), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy with Run From Package). Standardwert. auto
.
Gibt die Bereitstellungsmethode für die App an. Linux-Verbrauchs-Apps unterstützen diese Konfiguration nicht.
deploymentMethod
- Bereitstellungsmethode
string
. Erforderlich, wenn appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Zulässige Werte: auto
(Auto-Detect), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy with Run From Package). Standardwert. auto
.
Wählt die Bereitstellungsmethode für die App aus. Linux-Verbrauchs-Apps unterstützen diese Konfiguration nicht.
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
Anwendungs-URL der ausgewählten Azure-Funktions-App.
Hinweise
Der Task Azure-Funktionsbereitstellung wird verwendet, um Azure Functions zu aktualisieren, um Funktionen in Azure bereitzustellen. Der Task funktioniert auf plattformübergreifenden Azure Pipelines-Agents, die Windows, Linux oder Mac ausführen, und verwendet die zugrunde liegenden Bereitstellungstechnologien von RunFromPackage, Zip Deploy und Kudu REST-APIs.
Der Task funktioniert für die Azure Functions unterstützten Sprachen.
Voraussetzungen für die Aufgabe
Die folgenden Voraussetzungen müssen auf den Zielcomputern eingerichtet werden, damit die Aufgabe ordnungsgemäß funktioniert.
Azure Function
Der Task wird verwendet, um ein Azure Functions-Projekt in einer vorhandenen Azure-Funktion bereitzustellen. Die Azure Function-App sollte vor dem Ausführen der Aufgabe vorhanden sein. Die Azure-Funktions-App kann über die Azure-Portal erstellt werden. Alternativ kann der Azure PowerShell-Task verwendet werden, um AzureRM-PowerShell-Skripts zum Bereitstellen und Konfigurieren der Azure Function-App auszuführen.
Der Task kann zum Bereitstellen von Azure Functions (Windows/Linux) verwendet werden.
Azure-Abonnement
Zum Bereitstellen in Azure muss ein Azure-Abonnement über die Registerkarte Dienste im Abschnitt Kontoverwaltung mit Azure Pipelines verknüpft werden. Fügen Sie das Azure-Abonnement hinzu, das in der Definition Erstellen oder Release Management verwendet werden soll, indem Sie den Bildschirm Kontoverwaltung (Zahnradsymbol oben rechts auf dem Bildschirm) öffnen und dann auf die Registerkarte Dienste klicken.
Create den ARM-Dienstendpunkt und verwenden Sie den Azure Resource Manager-Endpunkttyp. Weitere Informationen finden Sie unter den hier aufgeführten Schritten.
Die Aufgabe funktioniert nicht mit dem klassischen Azure-Dienstendpunkt und listet diese Verbindungen nicht in den Parametern in der Aufgabe auf.
Bereitstellungsmethoden
In dieser Aufgabe stehen mehrere Bereitstellungsmethoden zur Verfügung.
Um die paketbasierte Bereitstellungsoption in einer Designeraufgabe 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 verwendet die Aufgabe eine geeignete Bereitstellungstechnologie. Die von Aufgaben verwendeten Bereitstellungstechnologien sind wie folgt:
Standardmäßig versucht der Task, die entsprechende Bereitstellungstechnologie basierend auf dem Eingabepaket, App Service Typ und Agentbetriebssystem auszuwählen.
- Wenn ein Skript nach der Bereitstellung bereitgestellt wird, verwenden Sie Zip Deploy.
- Wenn der App Service Typ Web-App unter Linux ist, verwenden Sie Zip Deploy.
- Wenn eine WAR-Datei bereitgestellt wird, verwenden Sie War Deploy.
- Wenn eine JAR-Datei bereitgestellt wird, verwenden Sie Run-From-Zip.
- Verwenden Sie für alle anderen Aufgaben Run From Package (über Zip Deploy).
Bei einem Nicht-Windows-Agent (für jeden App Service Typ) basiert die Aufgabe auf der Kudu-REST-API, um die Web-App bereitzustellen.
Kudu-REST-API
Die Kudu-REST-API funktioniert sowohl auf Windows- als auch auf Linux-Automatisierungs-Agents, wenn das Ziel eine Web-App unter Windows, eine Web-App unter Linux (integrierte Quelle) oder eine Funktions-App ist. Der Task verwendet Kudu, um Dateien in die Azure App Service zu kopieren.
ZIP-Bereitstellung
Zip Deploy erstellt ein .zip Bereitstellungspaket aus dem ausgewählten Paket oder Ordner. Anschließend wird der Dateiinhalt im Ordner wwwroot der App Service Name-Funktions-App in Azure bereitgestellt. Diese Option überschreibt alle vorhandenen Inhalte im Ordner wwwroot. Weitere Informationen finden Sie unter Zip-Bereitstellung für Azure Functions.
Ausführung aus einem Paket
Run From Package erstellt dasselbe Bereitstellungspaket wie Zip Deploy. Anstatt Dateien im Ordner wwwroot bereitzustellen, bindet die Functions-Runtime das gesamte Paket ein. Wenn Sie diese Option verwenden, 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).
Problembehandlung
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:
Ä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"
:Fügen Sie eine Archivaufgabe hinzu, und ändern Sie die Werte wie folgt:
Ändern Sie den Stammordner oder die zu archivierende Datei in
$(System.DefaultWorkingDirectory)\\WebAppContent
.Deaktivieren Sie das Kontrollkästchen Name des Stammordners den Archivpfaden voranstellen:
Die Bereitstellung der Funktions-App unter Windows ist erfolgreich, aber die App funktioniert nicht.
Dieses Problem kann auftreten, wenn keine web.config-Datei in Ihrer App vorhanden ist. Sie können ihrer Quelle entweder eine web.config-Datei hinzufügen oder mithilfe der Anwendungs- und Konfigurationseinstellungen der Aufgabe automatisch eine Datei generieren.
Wählen Sie die Aufgabe aus, und wechseln Sie zu Generieren web.config Parameter für Python-, Node.js-, Go- und Java-Apps:
Wählen Sie die Schaltfläche Mehr (...) unter Generieren web.config Parameter für Python-, Node.js-, Go- und Java-Apps aus, um die Parameter zu bearbeiten:
Wählen Sie Ihren Anwendungstyp in der Liste Anwendungsframework aus.
Klicken Sie auf OK. Dadurch werden die web.config Parameter aufgefüllt, die zum Generieren der web.config-Datei erforderlich sind.
Häufig gestellte Fragen
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 folder
haben. 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.
Ich kann keine Bereitstellung in einem internen App Service-Umgebung mithilfe einer Azure Resource Manager-Dienstverbindung und eines von Microsoft gehosteten Agents durchführen.
Ein von Microsoft gehosteter Agent funktioniert standardmäßig nicht mit einem App Service-Umgebung. Stattdessen müssen Sie einen privaten Agent auf einem virtuellen Computer konfigurieren, der sich im selben virtuellen Netzwerk wie der App Service-Umgebung befindet. Legen Sie außerdem eine private DNS-Zone fest, um die Kommunikation zwischen den Ressourcen zu ermöglichen.
Beispiele
Hier sehen Sie einen YAML-Beispielausschnitt, der Azure-Funktionen unter Windows bereitstellt:
variables:
azureSubscription: Contoso
# To ignore SSL error, uncomment the below variable
# VSTS_ARM_REST_IGNORE_SSL_ERRORS: true
steps:
- task: AzureFunctionApp@2
displayName: Azure Function App Deploy
inputs:
azureSubscription: $(azureSubscription)
appName: samplefunctionapp
appType: functionApp
package: $(System.DefaultWorkingDirectory)/**/*.zip
Um eine Funktion unter Linux bereitzustellen, fügen Sie den appType
Parameter hinzu, und legen Sie ihn auf fest appType: functionAppLinux
. Wenn Sie keinen Wert angeben, ist der Standardwert functionApp
.
Um die Bereitstellungsmethode explizit als Zip Deploy anzugeben, fügen Sie den Parameter deploymentMethod: zipDeploy
hinzu. Ein weiterer unterstützter Wert für diesen Parameter ist runFromPackage
.
Wenn Sie keinen Wert angeben, ist der Standardwert auto
.
Eine exemplarische Vorgehensweise zum Erstellen einer CI/CD-Pipeline finden Sie unter Erstellen und Bereitstellen von Java in Azure Functions.
Anforderungen
Anforderung | BESCHREIBUNG |
---|---|
Pipelinetypen | YAML, Klassischer Build, klassische Version |
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 |