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 для развертывания.


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

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


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

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


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

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


группы ресурсов
string. Требуется, если deployToSlotOrASE = true.

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


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

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


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

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


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

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


стека среды выполнения
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.


параметров приложения
string.

Укажите параметры приложения веб-приложения с помощью синтаксиса -key value (например, -Port 5000-RequestTimeout 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.

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


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

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

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

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

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

Замечания

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

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

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

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

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

  • REST API Kudu
  • Развертывание ZIP
  • RunFromPackage

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

  • Если тип службы приложений — веб-приложение в приложении Linux, используйте Zip Deploy
  • Если предоставлен файл 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 в конвейере сборки или выпуска, чтобы устранить ошибку.

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

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

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

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

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

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

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

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

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

Веб-пакеты, созданные с помощью задачи MSBuild (с аргументами по умолчанию), имеют вложенную структуру папок, которая может быть развернута правильно только с помощью веб-развертывания. Параметр развертывания публикации в 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, чтобы архивировать пути флажок:

      снимок экрана, на котором показаны значения архива.

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

Какова разница между задачами AzureWebApp и AzureRmWebAppDeployment?

Задача веб-приложения Azure () — это самый простой способ развертывания в веб-приложении 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 находится в той же виртуальной сети (подсети может отличаться), что и внутренняя подсистема балансировки нагрузки (ILB) ASE. Это позволит агенту извлекать код из Azure DevOps и развертывать в ASE.
  • Если вы используете Azure DevOps, агент не должен быть доступен из Интернета, но требуется только исходящий доступ для подключения к Службе Azure DevOps.
  • Если вы используете TFS/Azure DevOps Server, развернутый в виртуальной сети, агент может быть полностью изолирован.
  • Агент сборки должен быть настроен с конфигурацией DNS веб-приложения, в которую необходимо развернуть. Частные ресурсы в виртуальной сети не имеют записей в Azure DNS, поэтому это необходимо добавить в файл узла на компьютере агента.
  • Если для конфигурации ASE используется самозаверяющий сертификат, в задаче развертывания для MSDeploy необходимо задать параметр -allowUntrusted. Также рекомендуется задать для переменной VSTS_ARM_REST_IGNORE_SSL_ERRORS значение true. Если сертификат из центра сертификации используется для конфигурации ASE, это не обязательно.

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

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

Как настроить развертывание веб-заданий с помощью 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-развертывания, добавьте параметр deploymentMethod: zipDeploy. Другим поддерживаемым значением этого параметра является runFromPackage.

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

Требования

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