Udostępnij za pośrednictwem


AzureFunctionApp@2 — Azure Functions Wdrażanie zadania w wersji 2

Aktualizowanie aplikacji funkcji przy użyciu aplikacji internetowych opartych na języku .NET, Python, JavaScript, PowerShell i Java.

Składnia

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

Dane wejściowe

connectedServiceNameARM - Połączenie usługi Azure Resource Manager
Alias wejściowy: azureSubscription. string. Wymagane.

Wybierz subskrypcję usługi Azure Resource Manager dla wdrożenia.


appType - Typ aplikacji
string. Wymagane. Dozwolone wartości: functionApp (Aplikacja funkcji w systemie Windows), functionAppLinux (aplikacja funkcji w systemie Linux).

Wybierz typ aplikacji funkcji platformy Azure dla wdrożenia.


appName - nazwa aplikacji Azure Functions
string. Wymagane.

Określ nazwę istniejącej aplikacji Azure Functions. Wymienione aplikacje funkcji będą oparte na wybranym typie aplikacji.


deployToSlotOrASE - Wdrażanie w miejscu lub App Service Environment
boolean. Opcjonalny. Użyj polecenia , gdy appType != "". Wartość domyślna: false.

Wdraża w istniejącym miejscu wdrożenia lub środowisku Azure App Service. W przypadku obu obiektów docelowych zadanie wymaga nazwy grupy zasobów.

Jeśli miejsce docelowe wdrożenia jest miejscem docelowym, domyślnie zostanie ono ustawione na miejsce produkcyjne . Można również podać dowolną inną istniejącą nazwę miejsca.

Jeśli obiektem docelowym wdrożenia jest środowisko Azure App Service, pozostaw nazwę miejsca jako środowisko produkcyjne i określ nazwę grupy zasobów.


resourceGroupName - Grupa zasobów
string. Wymagane, gdy deployToSlotOrASE = true.

Nazwa grupy zasobów jest wymagana, gdy celem wdrożenia jest miejsce wdrożenia lub App Service Environment.

Wprowadza lub wybiera grupę zasobów platformy Azure zawierającą Azure App Service określone powyżej.


slotName - Gniazdo
string. Wymagane, gdy deployToSlotOrASE = true. Wartość domyślna: production.

Wprowadza lub wybiera istniejące miejsce z wyłączeniem miejsca produkcyjnego.


slotName - Gniazdo
string. Wymagane, gdy deployToSlotOrASE = true. Wartość domyślna: production.

Wprowadź lub wybierz istniejące miejsce inne niż miejsce produkcyjne.


package - Pakiet lub folder
string. Wymagane. Wartość domyślna: $(System.DefaultWorkingDirectory)/**/*.zip.

Ścieżka pliku do pakietu lub folderu zawierającego App Service zawartość wygenerowaną przez program MSBuild lub skompresowany plik zip. Obsługiwane są zmienne (wersjakompilacji | ) i symbole wieloznaczne. Na przykład $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - Stos środowiska uruchomieniowego
string. Opcjonalny. Użyj polecenia , gdy appType = functionAppLinux. Dozwolone wartości: DOTNET|6.0, DOTNET-ISOLATED|6.0DOTNET-ISOLATED|8.0JAVA|8JAVA|11DOTNET-ISOLATED|7.0JAVA|17JAVA|21PYTHON|3.8NODE|20PYTHON|3.9NODE|16NODE|18NODE|14, . PYTHON|3.10PYTHON|3.11

Określ strukturę i wersję, na podstawie których aplikacja funkcji będzie działać. Możesz użyć dowolnej z obsługiwanych wersji środowiska uruchomieniowego. Stare wartości, takie jak DOCKER|microsoft/azure-functions-* , są przestarzałe. Nowe wartości są wyświetlane na liście rozwijanej w asystent zadania. Jeśli w obsługiwanych wersjach środowiska uruchomieniowego jest dostępna nowsza wersja platformy, możesz ją określić, nawet jeśli nie znajduje się na liście.


runtimeStack - Stos środowiska uruchomieniowego
string. Opcjonalny. Użyj polecenia , gdy appType = functionAppLinux. Dozwolone wartości: DOTNET|2.2 (DOTNET|2.2 (aplikacja funkcji w wersji 2)), DOTNET|3.1 (DOTNET|3.1 (aplikacja funkcji w wersji 3)), DOTNET|6.0 (DOTNET|6.0 (aplikacja funkcji v4)), DOTNET-ISOLATED|7.0 (DOTNET-ISOLATED|7.0 (aplikacja funkcji w wersji 4)), JAVA|8 (JAVA|8 (aplikacja funkcji 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)).

Określ strukturę i wersję, na podstawie których aplikacja funkcji będzie działać. Możesz użyć dowolnej z obsługiwanych wersji środowiska uruchomieniowego. Stare wartości, takie jak DOCKER|microsoft/azure-functions-* , są przestarzałe. Nowe wartości są wyświetlane na liście rozwijanej w asystent zadania. Jeśli w obsługiwanych wersjach środowiska uruchomieniowego jest dostępna nowsza wersja platformy, możesz ją określić, nawet jeśli nie znajduje się na liście.


appSettings - Ustawienia aplikacji
string.

Wprowadź ustawienia aplikacji przy użyciu składni -key value (na przykład :-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Ujęcie wartości, które zawierają spacje w cudzysłowach podwójnych (na przykład: "Eastern Standard Time").


deploymentMethod - Metoda wdrażania
string. Wymagane, gdy appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Dozwolone wartości: auto (automatyczne wykrywanie), zipDeploy (wdrażanie zip), runFromPackage (wdrażanie zip z uruchomionym pakietem). Wartość domyślna: auto.

Określa metodę wdrażania aplikacji. Aplikacje z użyciem systemu Linux nie obsługują tej konfiguracji.


deploymentMethod - Metoda wdrażania
string. Wymagane, gdy appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Dozwolone wartości: auto (automatyczne wykrywanie), zipDeploy (wdrażanie zip), runFromPackage (wdrażanie zip z uruchomionym pakietem). Wartość domyślna: auto.

Wybiera metodę wdrażania aplikacji. Aplikacje z użyciem systemu Linux nie obsługują tej konfiguracji.s


Opcje sterowania zadania

Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań. Aby uzyskać więcej informacji, zobacz Opcje sterowania i typowe właściwości zadań.

Zmienne wyjściowe

To zadanie definiuje następujące zmienne wyjściowe, które można używać w krokach podrzędnych, zadaniach i etapach.

AppServiceApplicationUrl
Adres URL aplikacji wybranej aplikacji funkcji platformy Azure.

Uwagi

Zadanie wdrażania funkcji platformy Azure służy do aktualizowania Azure Functions w celu wdrożenia usługi Functions na platformie Azure. Zadanie działa na międzyplatformowych agentach usługi Azure Pipelines z systemem Windows, Linux lub Mac i korzysta z podstawowych technologii wdrażania interfejsów API REST RunFromPackage, Zip Deploy i Kudu.

Zadanie działa dla Azure Functions obsługiwanych języków.

Wymagania wstępne dotyczące zadania

Aby zadanie działało prawidłowo, należy skonfigurować następujące wymagania wstępne na maszynach docelowych.

Funkcja platformy Azure

Zadanie służy do wdrażania projektu Azure Functions w istniejącej funkcji platformy Azure. Aplikacja funkcji platformy Azure powinna istnieć przed uruchomieniem zadania. Aplikację funkcji platformy Azure można utworzyć na podstawie Azure Portal. Alternatywnie zadanie Azure PowerShell może służyć do uruchamiania skryptów programu PowerShell modułu AzureRM w celu aprowizowania i konfigurowania aplikacji funkcji platformy Azure.

Zadanie może służyć do wdrażania Azure Functions (Windows/Linux).

Subskrypcja platformy Azure

Aby można było wdrożyć na platformie Azure, subskrypcja platformy Azure musi być połączona z usługą Azure Pipelines przy użyciu karty Usługi w sekcji Administracja kontem. Dodaj subskrypcję platformy Azure do użycia w definicji Kompilacja lub Release Management, otwierając ekran Administracja kontem (ikona koła zębatego w prawym górnym rogu ekranu), a następnie kliknij kartę Usługi.

Twórca punktu końcowego usługi ARM i użyj typu punktu końcowego usługi Azure Resource Manager. Aby uzyskać więcej informacji, wykonaj kroki wymienione w linku tutaj.

Zadanie nie działa z punktem końcowym usługi klasycznej platformy Azure i nie będzie wyświetlać tych połączeń w parametrach w zadaniu.

Metody wdrażania

W tym zadaniu jest dostępnych kilka metod wdrażania.

Aby zmienić opcję wdrażania opartego na pakietach w zadaniu projektanta, rozwiń węzeł Dodatkowe opcje wdrażania i włącz opcję Wybierz metodę wdrażania.

Na podstawie typu agenta Azure App Service i usługi Azure Pipelines zadanie używa odpowiedniej technologii wdrażania. Technologie wdrażania używane przez zadania są następujące:

Domyślnie zadanie próbuje wybrać odpowiednią technologię wdrażania na podstawie pakietu wejściowego, App Service typu i systemu operacyjnego agenta.

  • Jeśli zostanie podany skrypt po wdrożeniu, użyj narzędzia Zip Deploy.
  • Jeśli typ App Service to Aplikacja internetowa w systemie Linux, użyj polecenia Zip Deploy.
  • Jeśli zostanie podany plik war, użyj narzędzia War Deploy.
  • Jeśli zostanie podany plik .jar, użyj polecenia Run-From-Zip.
  • W przypadku wszystkich innych zadań użyj polecenia Uruchom z pakietu (za pośrednictwem narzędzia Zip Deploy).

W przypadku agenta innego niż Windows (dla dowolnego typu App Service) zadanie opiera się na interfejsie API REST kudu w celu wdrożenia aplikacji internetowej.

Kudu REST API

Interfejs API REST kudu działa zarówno na agentach automatyzacji systemu Windows, jak i Linux, gdy elementem docelowym jest aplikacja internetowa w systemie Windows, aplikacja internetowa w systemie Linux (źródło wbudowane) lub aplikacja funkcji. Zadanie używa narzędzia Kudu do kopiowania plików do Azure App Service.

Wdrażanie z pliku zip

Narzędzie Zip Deploy tworzy pakiet wdrożeniowy .zip z wybranego pakietu lub folderu. Następnie wdraża zawartość pliku w folderze wwwroot aplikacji funkcji App Service name na platformie Azure. Ta opcja zastępuje całą istniejącą zawartość w folderze wwwroot. Aby uzyskać więcej informacji, zobacz Wdrażanie zip dla Azure Functions.

Uruchamianie z pakietu

Polecenie Uruchom z pakietu tworzy ten sam pakiet wdrożeniowy co narzędzie Zip Deploy. Zamiast wdrażać pliki w folderze wwwroot, środowisko uruchomieniowe usługi Functions instaluje cały pakiet. W przypadku korzystania z tej opcji pliki w folderze wwwroot stają się tylko do odczytu. Aby uzyskać więcej informacji, zobacz Uruchamianie funkcji Azure Functions z pliku pakietu.

Rozwiązywanie problemów

Błąd: Nie można pobrać tokenu dostępu dla platformy Azure. Sprawdź, czy użyta jednostka usługi jest prawidłowa i nie wygasła.

Zadanie używa jednostki usługi w połączeniu usługi do uwierzytelniania za pomocą platformy Azure. Jeśli jednostka usługi wygasła lub nie ma uprawnień do App Service, zadanie kończy się niepowodzeniem z powodu tego błędu. Sprawdź, czy używana jednostka usługi jest poprawna i czy jest obecna w rejestracji aplikacji. Aby uzyskać więcej informacji, zobacz Używanie kontroli dostępu na podstawie ról do zarządzania dostępem do zasobów subskrypcji platformy Azure. Ten wpis w blogu zawiera również więcej informacji na temat korzystania z uwierzytelniania jednostki usługi.

Błąd protokołu SSL

Jeśli chcesz użyć certyfikatu w App Service, certyfikat musi być podpisany przez zaufany urząd certyfikacji. Jeśli Twoja aplikacja internetowa wyświetla błędy walidacji certyfikatu, prawdopodobnie używasz certyfikatu z podpisem własnym. Ustaw zmienną o nazwie VSTS_ARM_REST_IGNORE_SSL_ERRORS na wartość true w potoku kompilacji lub wydania, aby usunąć błąd.

Wydanie zawiesza się przez długi czas, a następnie kończy się niepowodzeniem

Ten problem może być wynikiem niewystarczającej pojemności w planie App Service. Aby rozwiązać ten problem, możesz skalować w górę wystąpienie App Service w celu zwiększenia dostępnego procesora CPU, pamięci RAM i miejsca na dysku lub spróbować użyć innego planu App Service.

Kody błędów 5xx

Jeśli widzisz błąd 5xx , sprawdź stan usługi platformy Azure.

Funkcja platformy Azure nagle przestała działać

Azure Functions może nagle przestać działać, jeśli od ostatniego wdrożenia minęło więcej niż jeden rok. W przypadku wdrożenia za pomocą polecenia "RunFromPackage" w elemecie "deploymentMethod" zostanie wygenerowana sygnatura dostępu współdzielonego z datą wygaśnięcia 1 roku i ustawiona jako wartość "WEBSITE_RUN_FROM_PACKAGE" w konfiguracji aplikacji. Azure Functions używa tej sygnatury dostępu współdzielonego do odwoływanie się do pliku pakietu na potrzeby wykonywania funkcji, więc jeśli sygnatura dostępu współdzielonego wygasła, funkcja nie zostanie wykonana. Aby rozwiązać ten problem, wdróż ponownie, aby wygenerować sygnaturę dostępu współdzielonego z datą wygaśnięcia jednego roku.

Błąd: nie znaleziono żadnego pakietu z określonym wzorcem

Sprawdź, czy pakiet wymieniony w zadaniu został opublikowany jako artefakt w kompilacji lub na poprzednim etapie i pobrany w bieżącym zadaniu.

Błąd: Opcja publikowania przy użyciu narzędzia zip deploy nie jest obsługiwana dla typu pakietu msBuild

Pakiety sieci Web utworzone za pośrednictwem zadania MSBuild (z argumentami domyślnymi) mają zagnieżdżonych struktury folderów, które można prawidłowo wdrożyć tylko za pomocą narzędzia Web Deploy. Nie można użyć opcji wdrażania publikowania w pliku zip do wdrożenia tych pakietów. Aby przekonwertować strukturę pakowania, wykonaj następujące kroki:

  1. W zadaniu kompilowania rozwiązania zmień argumenty MSBuild na /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Zrzut ekranu przedstawiający wartości rozwiązania kompilacji.

  2. Dodaj zadanie Archiwum i zmień wartości w następujący sposób:

    1. Zmień folder główny lub plik na archiwum na $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Wyczyść pole wyboru Prepend root folder name to archive paths (Prepend root folder name to archive paths ):

      Zrzut ekranu przedstawiający wartości Archiwum.

Wdrażanie aplikacji funkcji w systemie Windows powiedzie się, ale aplikacja nie działa

Ten problem może wystąpić, jeśli plik web.config nie jest obecny w aplikacji. Możesz dodać plik web.config do źródła lub automatycznie wygenerować go przy użyciu ustawień aplikacji i konfiguracji zadania.

  1. Wybierz zadanie i przejdź do pozycji Generuj parametry web.config dla aplikacji Python, Node.js, Go i Java:

    Zrzut ekranu przedstawiający sekcję Generowanie parametrów web.config.

  2. Wybierz przycisk Więcej (...) w obszarze Generuj parametry web.config dla języków Python, Node.js, Go i Java, aby edytować parametry:

    Zrzut ekranu przedstawiający parametry Generowanie web.config.

  3. Wybierz typ aplikacji na liście Platforma aplikacji .

  4. Wybierz przycisk OK. Spowoduje to wypełnienie parametrów web.config wymaganych do wygenerowania pliku web.config.

Często zadawane pytania

Jak skonfigurować połączenie z usługą?

To zadanie wymaga połączenia usługi Azure Resource Manager.

Jak skonfigurować wdrożenie zadania internetowego za pomocą usługi Application Insights?

W przypadku wdrażania w App Service, jeśli skonfigurowano usługę Application Insights i włączono Remove additional files at destinationusługę , musisz również włączyć usługę Exclude files from the App_Data folder. Włączenie tej opcji powoduje zachowanie rozszerzenia usługi Application Insights w bezpiecznym stanie. Ten krok jest wymagany, ponieważ ciągłe zadanie WebJob usługi Application Insights jest instalowane w folderze App_Data.

Jak skonfigurować agenta, jeśli znajduje się on za serwerem proxy podczas wdrażania w App Service?

Jeśli własny agent wymaga internetowego serwera proxy, możesz poinformować agenta o serwerze proxy podczas konfigurowania. Dzięki temu agent może nawiązać połączenie z usługą Azure Pipelines lub Azure DevOps Server za pośrednictwem serwera proxy. Dowiedz się więcej o uruchamianiu własnego agenta za internetowym serwerem proxy.

Nie mogę wdrożyć w wewnętrznej App Service Environment przy użyciu połączenia usługi Azure Resource Manager i agenta hostowanego przez firmę Microsoft

Zgodnie z projektem agent hostowany przez firmę Microsoft nie będzie działać z App Service Environment. Zamiast tego należy skonfigurować prywatnego agenta na maszynie wirtualnej, która znajduje się w tej samej sieci wirtualnej co App Service Environment. Ponadto ustaw prywatną strefę DNS, aby umożliwić komunikację między zasobami.

Przykłady

Oto przykładowy fragment kodu YAML, który wdraża funkcje platformy Azure w systemie Windows:


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

Aby wdrożyć funkcję w systemie Linux, dodaj appType parametr i ustaw go na appType: functionAppLinuxwartość . Jeśli nie określisz wartości, functionApp jest wartością domyślną.

Aby jawnie określić metodę wdrożenia jako narzędzie Zip Deploy, dodaj parametr deploymentMethod: zipDeploy. Inną obsługiwaną wartością tego parametru jest runFromPackage. Jeśli nie określisz wartości, auto jest wartością domyślną.

Aby zapoznać się z przewodnikiem pokazującym sposób tworzenia potoku ciągłej integracji/ciągłego wdrażania, zobacz Kompilowanie i wdrażanie języka Java w Azure Functions.

Wymagania

Wymaganie Opis
Typy potoków YAML, kompilacja klasyczna, wersja klasyczna
Działa na Agent, DeploymentGroup
Wymagania Brak
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
Ograniczenia poleceń Dowolne
Zmienne w formie tabeli settable Dowolne
Wersja agenta 2.104.1 lub nowsza
Kategoria zadania Wdrażanie