Udostępnij za pośrednictwem


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

To zadanie wdraża aplikację internetową 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.

Wejścia

subskrypcji 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 usługi Azure App Service. Zostaną wyświetlone tylko usługi aplikacji oparte na wybranym typie aplikacji.


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

Wybiera opcję wdrożenia w istniejącym miejscu wdrożenia lub środowisku Azure App Service Environment.
W przypadku obu obiektów docelowych zadanie wymaga nazwy grupy zasobów.
Jeśli miejscem docelowym wdrożenia jest miejsce docelowe, wartość domyślna to miejsce produkcyjne. Można również podać dowolną inną istniejącą nazwę miejsca.
Jeśli celem wdrożenia jest środowisko Azure App Service Environment, pozostaw nazwę miejsca jako "production" i określ nazwę grupy zasobów.


grupy zasobów
string. Wymagane, gdy deployToSlotOrASE = true.

Nazwa grupy zasobów jest wymagana, gdy celem wdrożenia jest miejsce wdrożenia lub środowisko Azure App Service Environment.
Określa grupę zasobów platformy Azure zawierającą usługę Azure App Service wskazaną powyżej.


miejsca
string. Wymagane, gdy deployToSlotOrASE = true. Wartość domyślna: production.

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


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

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


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

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


stosu środowiska uruchomieniowego
string. Fakultatywny. 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 wybierana jako typ aplikacji w zadaniu.


polecenia uruchamiania
string. Fakultatywny. 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 języka Python, Node.js, Go i Java apps
string. Fakultatywny. Użyj polecenia , gdy appType != webAppLinux && package NotEndsWith .war.

Standardowa web.config zostanie wygenerowana i wdrożona w usłudze 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 wygenerowanej web.config.


ustawienia aplikacji appSettings -
string.

Określ ustawienia aplikacji internetowej przy użyciu -key value składni (na przykład: -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE). Ujęć wartości zawierające 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 -key value składni (na przykład: -phpVersion 5.6-linuxFxVersion: node|6.11). Ujęć wartości, które zawierają spacje w cudzysłowach podwójnych.


metody 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 (Uruchom z pakietu). Wartość domyślna: auto.

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


Opcje sterowania zadaniami

Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań podrzędnych. Aby uzyskać więcej informacji, zobacz opcje kontroli 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 usługi Azure App Service.

Uwagi

To zadanie służy do wdrażania aplikacji internetowych w usłudze 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ń Dodatkowe opcje wdrażania i włącz Wybierz metodę wdrażania.

Na podstawie typu agenta usług Azure App Service i Azure Pipelines zadanie wybiera odpowiednią technologię wdrażania. Różne technologie wdrażania używane przez zadanie to:

  • Interfejsy API REST kudu
  • Wdrażanie 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 aplikacji jest aplikacja internetowa w aplikacji systemu Linux, użyj polecenia Zip Deploy
  • Jeśli zostanie podany plik War, użyj War Deploy
  • Jeśli zostanie podany plik Jar, użyj Uruchom z pakietu
  • W przypadku wszystkich innych użytkowników użyj Uruchom z zip (za pośrednictwem narzędzia Zip Deploy)

W przypadku agenta innego niż Windows (dla dowolnego typu usługi app Service) zadanie opiera się na interfejsów API REST 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 narzędzia Kudu do kopiowania plików do usługi Azure App Service.

Wdrażanie zip

Tworzy .zip pakiet wdrożeniowy wybranego pakietu lub folderu. Zawartość pliku jest następnie wdrażana w folderze wwwroot aplikacji funkcji w usłudze Azure App Service. Ta opcja zastępuje całą istniejącą zawartość w folderze wwwroot. Aby uzyskać więcej informacji, zobacz Wdrażanie zip dla usługi 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 usługi Azure Functions. Dzięki tej opcji pliki w folderze wwwroot stają się tylko do odczytu. Aby uzyskać więcej informacji, zobacz Uruchamianie usługi 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 z usługą do uwierzytelniania za pomocą platformy Azure. Jeśli jednostka usługi wygasła lub nie ma uprawnień do usługi App Service, zadanie kończy się niepowodzeniem z powodu tego błędu. Sprawdź poprawność używanej jednostki usługi i czy jest ona obecna w rejestracji aplikacji. Aby uzyskać więcej informacji, zobacz Use role-based access control to manage access to your Azure subscription resources. Ten wpis w blogu zawiera również więcej informacji na temat korzystania z uwierzytelniania jednostki usługi.

Błąd SSL

Jeśli chcesz użyć certyfikatu w usłudze App Service, certyfikat musi być podpisany przez zaufany urząd certyfikacji. Jeśli aplikacja internetowa daje błędy weryfikacji 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 w celu rozwiązania błędu.

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 usługi App Service. Aby rozwiązać ten problem, możesz skalować wystąpienie usługi App Service w górę w celu zwiększenia dostępnego procesora CPU, pamięci RAM i miejsca na dysku lub spróbować użyć innego planu usługi App Service.

5xx kody błędów

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

Funkcja platformy Azure nagle przestała działać

Usługa 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 obszarze "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. Usługa Azure Functions używa tej sygnatury dostępu współdzielonego do odwołowania 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 pakietu z określonym wzorcem

Sprawdź, czy pakiet wymieniony w zadaniu został opublikowany jako artefakt w kompilacji lub 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 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 w pliku zip do wdrożenia tych pakietów. Aby przekonwertować strukturę pakowania, wykonaj następujące kroki:

  1. W zadaniu Kompilowanie 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ść prepend nazwy folderu głównego do ścieżek archiwum pole wyboru:

      Zrzut ekranu przedstawiający wartości Archiwum.

Często zadawane pytania

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

Zadanie Azure Web App (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żanie usługi Azure App Service (AzureRmWebAppDeployment) może obsługiwać więcej scenariuszy niestandardowych, takich jak:

Nuta

Przekształcenia plików i podstawienie 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 podstawienia zmiennych w dowolnych plikach konfiguracji i parametrów.

Wdrażanie aplikacji internetowej w systemie Windows zakończyło 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 wygenerować go automatycznie przy użyciu ustawienia aplikacji i konfiguracji.

  • Kliknij zadanie i przejdź do Generowanie parametrów web.config dla języka Python, Node.js, Go i Java apps.

    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ętrzny moduł równoważenia obciążenia (ILB) środowiska ASE. Umożliwi to agentowi ściąganie kodu z usługi Azure DevOps i wdrażanie 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 sieci wirtualnej, agent może być całkowicie odizolowany.
  • Agent kompilacji musi być skonfigurowany przy użyciu konfiguracji DNS aplikacji internetowej, do których musi zostać wdrożona. Zasoby prywatne w sieci wirtualnej 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, należy ustawić opcję -allowUntrusted w zadaniu wdrażania dla narzędzia MSDeploy. Zaleca się również ustawienie VSTS_ARM_REST_IGNORE_SSL_ERRORS zmiennej na wartość 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?

Jeśli wdrażasz w usłudze App Service, jeśli skonfigurowano Application Insights i włączono Remove additional files at destination, należy również włączyć 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 usłudze 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 usługą Azure DevOps Server za pośrednictwem serwera proxy. Dowiedz się więcej na temat uruchamiania własnego agenta za internetowym serwerem proxy.

Przykłady

Poniżej przedstawiono przykładowy fragment kodu YAML służący do wdrażania aplikacji internetowej w usłudze Azure Web App Service działającej 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ą w systemie Linux, dodaj parametr appType i ustaw go na appType: webAppLinux.

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

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

Wymagania

Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja, wersja klasyczna
Działa na Agent, DeploymentGroup
Wymagania Żaden
możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
ograniczenia poleceń Jakikolwiek
zmienne ustawiane Jakikolwiek
Wersja agenta 2.209.0 lub nowsza
Kategoria zadań Wdrożyć
Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja, wersja klasyczna
Działa na Agent, DeploymentGroup
Wymagania Żaden
możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
ograniczenia poleceń Jakikolwiek
zmienne ustawiane Jakikolwiek
Wersja agenta 2.104.1 lub nowsza
Kategoria zadań Wdrożyć