AzureWebApp@1 — задача "Веб-приложение Azure" версии 1

Эта задача развертывает веб-приложение Azure для Linux или Windows.

Синтаксис

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

Входные данные

azureSubscription - Подписка Azure
string. Обязательный.

Указывает подключение к подписке Azure Resource Manager для развертывания.


appType - Тип приложения
string. Обязательный. Допустимые значения: webApp (веб-приложение в Windows), webAppLinux (веб-приложение в Linux).

Указывает тип веб-приложения Azure.


appName - Имя приложения
string. Обязательный.

Указывает имя существующего Служба приложений Azure. Будут перечислены только службы приложений, основанные на выбранном типе приложения.


deployToSlotOrASE - Развертывание в слоте или Среда службы приложений
boolean. Необязательный элемент. Используйте при appType != "". Значение по умолчанию: false.

Выбирает вариант развертывания в существующий слот развертывания или среду Служба приложений Azure.
Для обоих целевых объектов задаче требуется имя группы ресурсов.
Если целевым объектом развертывания является слот, по умолчанию используется рабочий слот. Также можно указать любое другое имя существующего слота.
Если целевым объектом развертывания является среда Служба приложений Azure, оставьте имя слота как production и укажите имя группы ресурсов.


resourceGroupName - Группа ресурсов
string. Требуется, если deployToSlotOrASE = true.

Имя группы ресурсов необходимо, если целевой объект развертывания является слотом развертывания или средой Служба приложений Azure.
Указывает группу ресурсов Azure, содержащую указанные выше Служба приложений Azure.


slotName - Слот
string. Требуется, если deployToSlotOrASE = true. Значение по умолчанию: production.

Указывает существующий слот, за исключением рабочего слота.


package - Пакет или папка
string. Обязательный. Значение по умолчанию: $(System.DefaultWorkingDirectory)/**/*.zip.

Путь к пакету или папке, содержащей Служба приложений содержимого, созданного MSBuild, сжатым ZIP-файлом или war-файлом. Поддерживаются переменные (выпусксборки | ) и подстановочные знаки. Например, $(System.DefaultWorkingDirectory)/**/*.zip или $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - Настраиваемая папка развертывания
string. Необязательный элемент. Используйте при package EndsWith .war.

Указывает имя настраиваемой папки, в которую требуется выполнить развертывание.
Если поле пустое, пакет развертывается в <appname>.azurewebsites.net/<warpackagename>.
Если указан root, пакет развертывается в <appname>.azurewebsited.net.
Во всех остальных экземплярах он развертывается в <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Стек среды выполнения
string. Необязательный элемент. Используйте при appType = webAppLinux.

Веб-приложение в Linux предлагает два варианта публикации приложения: развертывание пользовательского образа (веб-приложение для контейнеров) и развертывание приложений со встроенным образом платформы (веб-приложение в Linux). Этот параметр доступен, только если веб-приложение Linux выбрано в качестве типа приложения в задаче.


startUpCommand - Команда запуска
string. Необязательный элемент. Используйте при appType = webAppLinux.

Указывает команду запуска.
Пример:
dotnet run
dotnet filename.dll.


customWebConfig - Создание параметров web.config для приложений Python, Node.js, Go и Java
string. Необязательный элемент. Используйте при appType != webAppLinux && package NotEndsWith .war.

Стандартный web.config будет создан и развернут в Служба приложений Azure, если у приложения его нет. Значения в web.config зависят от платформы приложений и могут быть изменены. Например, для приложения node.js web.config будет иметь файл запуска и iis_node значения модуля. Эта функция редактирования доступна только для созданных web.config.


appSettings - Параметры приложения
string.

Укажите параметры веб-приложения с помощью синтаксиса -key value (например,-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Заключайте значения, содержащие пробелы, в двойные кавычки (например, "Eastern Standard Time").


configurationStrings - Параметры конфигурации
string.

Укажите параметры конфигурации веб-приложения с помощью синтаксиса -key value (например, -phpVersion 5.6-linuxFxVersion: node|6.11). Заключайте значения, содержащие пробелы, в двойные кавычки.


deploymentMethod - Метод развертывания
string. Требуется, если appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Допустимые значения: auto (автоматическое обнаружение), zipDeploy (zip-развертывание), runFromPackage (запуск из пакета). Значение по умолчанию: auto.

Выберите метод развертывания для приложения. Допустимые значения: auto, zipDeploy и runFromPackage.


Параметры управления задачами

Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.

Выходные переменные

Эта задача определяет следующие выходные переменные, которые можно использовать в нисходящих шагах, заданиях и этапах.

AppServiceApplicationUrl
URL-адрес приложения выбранного Служба приложений Azure.

Комментарии

Используйте эту задачу для развертывания веб-приложений в Служба приложений Azure.

Методы развертывания

В этой задаче доступно несколько методов развертывания. Auto — параметр по умолчанию.

Чтобы изменить параметр развертывания на основе пакетов в задаче конструктора, разверните узел Дополнительные параметры развертывания и включите параметр Выбор метода развертывания.

В зависимости от типа Служба приложений Azure и агента Azure Pipelines задача выбирает подходящую технологию развертывания. Ниже перечислены различные технологии развертывания, используемые задачей.

  • Интерфейсы REST API Kudu
  • Развертывание из ZIP-файла
  • RunFromPackage

По умолчанию задача пытается выбрать соответствующую технологию развертывания с учетом входного пакета, типа службы приложений и операционной системы агента.

  • Если тип службы приложений — Веб-приложение в приложении Linux, используйте zip-развертывание.
  • Если указан war-файл, используйте War Deploy
  • Если указан JAR-файл, используйте команду Выполнить из пакета.
  • Для всех остальных используйте команду Выполнить из ZIP-файла (с помощью zip-развертывания).

В агенте, отличном от Windows (для любого типа службы приложений), задача использует REST API Kudu для развертывания веб-приложения.

Интерфейсы REST API Kudu

Интерфейсы REST API Kudu работают с агентами автоматизации Windows или Linux, если целевым объектом является веб-приложение в Windows, веб-приложение в Linux (встроенный источник) или приложение-функция. Задача использует Kudu для копирования файлов в Служба приложений Azure.

Развертывание из ZIP-файла

Создает пакет развертывания .zip выбранного пакета или папки. Затем содержимое файла развертывается в папку wwwroot приложения-функции в Служба приложений Azure. Этот параметр перезаписывает все существующее содержимое в папке wwwroot. Дополнительные сведения см. в статье Развертывание zip для Функции Azure.

RunFromPackage

Создает тот же пакет развертывания, что и Zip Deploy. Однако вместо развертывания файлов в папке wwwroot весь пакет подключается средой выполнения Функции Azure. При использовании этого параметра файлы в папке wwwroot становятся доступными только для чтения. Дополнительные сведения см. в руководстве по запуску Функций Azure из файла пакета.

Ошибка: "Не удалось извлечь маркер доступа для Azure". Убедитесь, что используемый субъект-служба является допустимым и не истек ли срок действия.

Задача использует субъект-службу в подключении к службе для проверки подлинности в Azure. Если срок действия субъекта-службы истек или у него нет разрешений на Служба приложений, задача завершается сбоем с этой ошибкой. Убедитесь, что используемый субъект-служба допустимый и что он присутствует в регистрации приложения. Дополнительные сведения см. в статье Использование управления доступом на основе ролей для контроля доступа к ресурсам в подписке Azure. В этой записи блога также содержатся дополнительные сведения об использовании проверки подлинности субъекта-службы.

Ошибка SSL

Если вы хотите использовать сертификат в Служба приложений, сертификат должен быть подписан доверенным центром сертификации. Если веб-приложение выдает ошибки проверки сертификата, вероятно, вы используете самозаверяющий сертификат. Присвойте переменной VSTS_ARM_REST_IGNORE_SSL_ERRORS значение true в конвейере сборки или выпуска, чтобы устранить ошибку.

Выпуск зависает на долгое время, а затем завершается ошибкой

Эта проблема может быть связана с нехваткой емкости в плане Служба приложений. Чтобы устранить эту проблему, можно увеличить масштаб экземпляра Служба приложений, чтобы увеличить доступное пространство ЦП, ОЗУ и дискового пространства, или попробовать использовать другой план Служба приложений.

Коды ошибок 5хх

Если вы видите ошибку 5xx, проверка состояние службы Azure.

Функция Azure внезапно перестала работать

Функции Azure может внезапно перестать работать, если с момента последнего развертывания прошло более одного года. При развертывании с параметром RunFromPackage в deploymentMethod создается SAS с датой окончания срока действия 1 год и устанавливается значение WEBSITE_RUN_FROM_PACKAGE в конфигурации приложения. Функции Azure использует этот SAS для ссылки на файл пакета для выполнения функции, поэтому если срок действия SAS истек, функция не будет выполняться. Чтобы устранить эту проблему, разверните еще раз, чтобы создать SAS с датой окончания срока действия в один год.

Ошибка: "Пакет с указанным шаблоном не найден"

Проверьте, публикуется ли пакет, упомянутый в задаче, как артефакт в сборке или на предыдущем этапе и скачан ли он в текущем задании.

Ошибка: параметр развертывания публикации с помощью ZIP-файла не поддерживается для типа пакета msBuild

Веб-пакеты, созданные с помощью задачи MSBuild (с аргументами по умолчанию), имеют структуру вложенных папок, которую можно правильно развернуть только с помощью веб-развертывания. Параметр развертывания publish-to-ZIP нельзя использовать для развертывания этих пакетов. Чтобы преобразовать структуру упаковки, сделайте следующее:

  1. В задаче Сборка решения измените аргументы MSBuild на /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Снимок экрана: значения решения для сборки.

  2. Добавьте задачу Архивация и измените значения следующим образом:

    1. Измените корневую папку или файл для архивации на $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Снимите флажок Prepend root folder name to archive paths проверка ( Prepend root folder name to archive paths проверка ).

      Снимок экрана: значения архива.

Часто задаваемые вопросы

В чем разница между задачами AzureWebApp и AzureRmWebAppDeployment ?

Задача веб-приложения Azure (AzureWebApp) — это самый простой способ развертывания в веб-приложении Azure. По умолчанию развертывание выполняется в корневое приложение в веб-приложении Azure.

Задача развертывания Служба приложений Azure (AzureRmWebAppDeployment) может обрабатывать дополнительные пользовательские сценарии, например:

Примечание

Преобразования файлов и подстановка переменных также поддерживаются отдельной задачей преобразования файлов для использования в Azure Pipelines. Вы можете использовать задачу преобразования файлов, чтобы применять преобразования файлов и подстановки переменных к любым файлам конфигурации и параметров.

Развертывание веб-приложения в Windows выполнено успешно, но приложение не работает

Это может быть вызвано тем, что web.config отсутствует в приложении. Вы можете добавить файл web.config в источник или автоматически создать его с помощью параметров приложения и конфигурации.

  • Щелкните задачу и перейдите в раздел Создание параметров web.config для приложений Python, Node.js, Go и Java.

    Снимок экрана: диалоговое окно

  • Нажмите кнопку ... Дополнительно, чтобы изменить параметры.

    Снимок экрана: раскрывающееся диалоговое окно.

  • Выберите тип приложения в раскрывающемся списке.

  • Щелкните ОК. При этом будут заполнены параметры web.config, необходимые для создания web.config.

Развертывание веб-приложения в Среде службы приложений (ASE) не работает

  • Убедитесь, что агент сборки Azure DevOps находится в той же виртуальной сети (подсеть может отличаться), что и внутренняя Load Balancer (ILB) ASE. Это позволит агенту извлекать код из Azure DevOps и развертывать их в ASE.
  • Если вы используете Azure DevOps, агент не обязательно должен быть доступен из Интернета, а только исходящий доступ для подключения к Azure DevOps Service.
  • Если вы используете TFS/Azure DevOps Server развернуты в виртуальная сеть, агент можно полностью изолировать.
  • Агент сборки должен быть настроен с помощью конфигурации DNS веб-приложения, в который он должен развернуться. У частных ресурсов в виртуальная сеть нет записей в Azure DNS, поэтому их необходимо добавить в файл узла на компьютере агента.
  • Если для конфигурации ASE используется самозаверяющий сертификат, -allowUntrusted этот параметр необходимо задать в задаче развертывания для MSDeploy. Рекомендуется также задать для переменной VSTS_ARM_REST_IGNORE_SSL_ERRORS значение true. Если для настройки ASE используется сертификат из центра сертификации, это не должно быть обязательным.

Как настроить подключение к службе?

Для выполнения этой задачи требуется подключение службы Resource Manager Azure.

Как настроить развертывание веб-заданий с помощью Application Insights?

Если при развертывании в Служба приложений настроено приложение Application Insights и вы включили Remove additional files at destination, необходимо также включить Exclude files from the App_Data folder. При включении этого параметра расширение Application Insights сохраняется в безопасном состоянии. Этот шаг является обязательным, так как непрерывное веб-задание Application Insights устанавливается в папку App_Data.

Как настроить агент, если он находится за прокси-сервером во время развертывания в Служба приложений?

Если локальному агенту требуется веб-прокси, вы можете сообщить агенту о прокси-сервере во время настройки. Это позволит агенту подключаться к Azure Pipelines или Azure DevOps Server через прокси-сервер. Узнайте больше о запуске локального агента за веб-прокси.

Примеры

Ниже приведен пример фрагмента YAML для развертывания веб-приложения в веб-Служба приложений Azure, работающем в 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

Чтобы развернуть веб-приложение в Linux, добавьте appType параметр и задайте для него значение appType: webAppLinux.

Чтобы указать метод развертывания как Zip Deploy, добавьте параметр deploymentMethod: zipDeploy. Другое поддерживаемое значение для этого параметра — runFromPackage.

Если значение не указано, auto является значением по умолчанию.

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 2.104.1 или более поздней версии
Категория задач Развертывание