AzureWebApp@1 — zadanie aplikacji internetowej platformy Azure w wersji 1

To zadanie służy do wdrażania aplikacji internetowej platformy Azure dla systemu Linux lub Windows.

Składnia

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

Dane wejściowe

azureSubscription - Subskrypcja platformy Azure
string. Wymagane.

Określa połączenie subskrypcji usługi Azure Resource Manager dla wdrożenia.


appType - Typ aplikacji
string. Wymagane. Dozwolone wartości: webApp (aplikacja internetowa w systemie Windows), webAppLinux (aplikacja internetowa w systemie Linux).

Określa typ aplikacji internetowej platformy Azure.


appName - Nazwa aplikacji
string. Wymagane.

Określa nazwę istniejącej Azure App Service. Zostaną wyświetlone tylko usługi app services 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.

Wybiera opcję wdrożenia 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 miejscem docelowym wdrożenia jest miejsce docelowe, wartością domyślną jest 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 "produkcja" i określ nazwę grupy zasobów.


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

Nazwa grupy zasobów jest wymagana, gdy miejscem docelowym wdrożenia jest miejsce wdrożenia lub środowisko Azure App Service.
Określa grupę zasobów platformy Azure zawierającą Azure App Service wskazane powyżej.


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

Określa istniejące miejsce, z wyłączeniem miejsca produkcyjnego.


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, skompresowany plik zip lub plik wojenny. Obsługiwane są zmienne (wersjakompilacji | ) i symbole wieloznaczne. Na przykład: $(System.DefaultWorkingDirectory)/**/*.zip lub $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - Folder wdrażania niestandardowego
string. Opcjonalny. Użyj polecenia , gdy package EndsWith .war.

Określa nazwę folderu niestandardowego, do którego chcesz wdrożyć.
Jeśli pole jest puste, pakiet zostanie wdrożony w programie <appname>.azurewebsites.net/<warpackagename>.
Jeśli zostanie wprowadzony element ROOT, pakiet zostanie wdrożony w usłudze <appname>.azurewebsited.net.
We wszystkich innych wystąpieniach jest on wdrażany w usłudze <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Stos środowiska uruchomieniowego
string. Opcjonalny. Użyj polecenia , gdy appType = webAppLinux.

Aplikacja internetowa w systemie Linux oferuje dwie różne opcje publikowania aplikacji: wdrażanie obrazów niestandardowych (Web App for Containers) i wdrażanie aplikacji z wbudowanym obrazem platformy (aplikacja internetowa w systemie Linux). Ten parametr jest dostępny tylko wtedy, gdy aplikacja internetowa systemu Linux jest wybrana jako typ aplikacji w zadaniu.


startUpCommand - Polecenie uruchamiania
string. Opcjonalny. Użyj polecenia , gdy appType = webAppLinux.

Określa polecenie uruchamiania.
Na przykład:
dotnet run
dotnet filename.dll.


customWebConfig - Generowanie parametrów web.config dla aplikacji Python, Node.js, Go i Java
string. Opcjonalny. Użyj polecenia , gdy appType != webAppLinux && package NotEndsWith .war.

Standardowa web.config zostanie wygenerowana i wdrożona w Azure App Service, jeśli aplikacja jej nie ma. Wartości w web.config różnią się w zależności od struktury aplikacji i można je edytować. Na przykład w przypadku aplikacji node.js web.config będą miały plik startowy i wartości modułu iis_node. Ta funkcja edycji dotyczy tylko wygenerowanego web.config.


appSettings - Ustawienia aplikacji
string.

Określ ustawienia aplikacji internetowej 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").


configurationStrings - Ustawienia konfiguracji
string.

Określ ustawienia konfiguracji aplikacji internetowej przy użyciu składni -key value (na przykład : -phpVersion 5.6-linuxFxVersion: node|6.11). Ujęć wartości, które zawierają spacje w cudzysłowach podwójnych.


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

Wybierz metodę wdrażania dla aplikacji. Dopuszczalne wartości to auto, zipDeploy i runFromPackage.


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 wybranego Azure App Service.

Uwagi

To zadanie służy do wdrażania aplikacji internetowych w celu Azure App Service.

Metody wdrażania

W tym zadaniu jest dostępnych kilka metod wdrażania. Auto jest opcją domyślną.

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 wybiera odpowiednią technologię wdrażania. Różne technologie wdrażania używane przez zadanie to:

  • Interfejsy API REST kudu
  • Wdrażanie z pliku zip
  • RunFromPackage

Domyślnie zadanie próbuje wybrać odpowiednią technologię wdrażania, biorąc pod uwagę pakiet wejściowy, typ usługi App Service i system operacyjny agenta.

  • Gdy typem usługi app service jest aplikacja internetowa w aplikacji systemu Linux, użyj polecenia Zip Deploy
  • Jeśli zostanie podany plik War, użyj narzędzia War Deploy
  • Jeśli podano plik Jar, użyj polecenia Uruchom z pakietu
  • Dla wszystkich innych użyj polecenia Uruchom z pliku Zip (za pośrednictwem narzędzia Zip Deploy)

W przypadku agenta innego niż Windows (dla dowolnego typu usługi aplikacji) zadanie polega na interfejsach API REST usługi Kudu w celu wdrożenia aplikacji internetowej.

Interfejsy API REST kudu

Interfejsy API REST kudu działają na agentach automatyzacji systemu Windows lub Linux, gdy elementem docelowym jest aplikacja internetowa w systemie Windows, aplikacja internetowa w systemie Linux (wbudowane źródło) lub aplikacja funkcji. Zadanie używa kudu do kopiowania plików do Azure App Service.

Wdrażanie z pliku zip

Tworzy .zip pakiet wdrożeniowy wybranego pakietu lub folderu. Zawartość pliku zostanie następnie wdrożona w folderze wwwroot aplikacji funkcji w Azure App Service. Ta opcja zastępuje całą istniejącą zawartość w folderze wwwroot. Aby uzyskać więcej informacji, zobacz Wdrażanie zip dla Azure Functions.

RunFromPackage

Tworzy ten sam pakiet wdrożeniowy co Zip Deploy. Jednak zamiast wdrażać pliki w folderze wwwroot cały pakiet jest instalowany przez środowisko uruchomieniowe Azure Functions. Dzięki tej opcji pliki w folderze wwwroot stają się tylko do odczytu. Aby uzyskać więcej informacji, zobacz Uruchamianie funkcji Azure Functions z pliku pakietu.

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 rozwiązać ten problem.

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ż 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łania 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 wdrażania zip nie jest obsługiwana dla typu pakietu msBuild

Pakiety sieci Web utworzone za pośrednictwem zadania MSBuild (z domyślnymi argumentami) mają zagnieżdżonych struktury folderów, które można wdrożyć poprawnie tylko za pomocą narzędzia Web Deploy. Nie można użyć opcji wdrażania publikowania do zip w celu 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 do ścieżek archiwum :

      Zrzut ekranu przedstawiający wartości Archiwum.

Często zadawane pytania

Jaka jest różnica między zadaniami AzureWebApp i?AzureRmWebAppDeployment

Zadanie aplikacji internetowej platformy Azure (AzureWebApp) to najprostszy sposób wdrażania w aplikacji internetowej platformy Azure. Domyślnie wdrożenie odbywa się z aplikacją główną w aplikacji internetowej platformy Azure.

Zadanie wdrażania Azure App Service (AzureRmWebAppDeployment) może obsługiwać więcej scenariuszy niestandardowych, takich jak:

Uwaga

Przekształcenia plików i podstawianie zmiennych są również obsługiwane przez oddzielne zadanie Przekształcanie plików do użycia w usłudze Azure Pipelines. Za pomocą zadania Przekształcanie plików można zastosować przekształcenia plików i zmienne podstawienia na dowolnych plikach konfiguracji i parametrów.

Wdrażanie aplikacji internetowej w systemie Windows kończy się pomyślnie, ale aplikacja nie działa

Może to być spowodowane tym, że 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.

  • Kliknij zadanie i przejdź do pozycji Generowanie parametrów web.config dla aplikacji python, Node.js, Go i Java.

    Zrzut ekranu przedstawiający okno dialogowe Generowanie parametrów web.config.

  • Kliknij przycisk ... Więcej, aby edytować parametry.

    Zrzut ekranu przedstawiający okno dialogowe listy rozwijanej.

  • Wybierz typ aplikacji z listy rozwijanej.

  • Kliknij przycisk OK. Spowoduje to wypełnienie parametrów web.config wymaganych do wygenerowania web.config.

Wdrażanie aplikacji internetowej w środowisku App Service Environment (ASE) nie działa

  • Upewnij się, że agent kompilacji usługi Azure DevOps znajduje się w tej samej sieci wirtualnej (podsieć może być inna), co wewnętrzna Load Balancer (ILB) środowiska ASE. Umożliwi to agentowi ściąganie kodu z usługi Azure DevOps i wdrażanie go w środowisku ASE.
  • Jeśli używasz usługi Azure DevOps, agent nie musi być dostępny z Internetu, ale wymaga tylko dostępu wychodzącego w celu nawiązania połączenia z usługą Azure DevOps Service.
  • Jeśli używasz serwera TFS/Azure DevOps Server wdrożonego w Virtual Network, agent może być całkowicie odizolowany.
  • Agent kompilacji musi być skonfigurowany z konfiguracją DNS aplikacji internetowej, do których musi zostać wdrożony. Zasoby prywatne w Virtual Network nie mają wpisów w usłudze Azure DNS, dlatego należy dodać je do pliku hosta na maszynie agenta.
  • Jeśli dla konfiguracji środowiska ASE jest używany certyfikat z podpisem własnym, -allowUntrusted należy ustawić opcję w zadaniu wdrażania dla środowiska MSDeploy. Zaleca się również ustawienie zmiennej VSTS_ARM_REST_IGNORE_SSL_ERRORS na true. Jeśli certyfikat z urzędu certyfikacji jest używany do konfiguracji środowiska ASE, nie powinno to być konieczne.

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

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

Jak skonfigurować wdrażanie zadań internetowych za pomocą usługi Application Insights?

W przypadku wdrażania w App Service jeśli skonfigurowano usługę Application Insights i włączono tę funkcjęRemove additional files at destination, należy również włączyć Exclude files from the App_Data folderusługę . 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 konfiguracji. 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.

Przykłady

Poniżej przedstawiono przykładowy fragment kodu YAML umożliwiający wdrożenie aplikacji internetowej w usłudze Azure Web App Service uruchomionych w systemie Windows.

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

Aby wdrożyć aplikację internetową appType w systemie Linux, dodaj parametr i ustaw go na appType: webAppLinux.

Aby określić metodę wdrażania jako Zip Deploy, dodaj parametr deploymentMethod: zipDeploy. Inną obsługiwaną wartością tego parametru jest runFromPackage.

Jeśli nie zostanie określona, auto jest wartością domyślną.

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