AzureFunctionApp@2 — задача "Развертывание Функции Azure версии 2"

Обновление приложения-функции с помощью .NET, Python, JavaScript, PowerShell и веб-приложений на основе Java.

Синтаксис

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

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

connectedServiceNameARM - Подключение azure Resource Manager
Входной псевдоним: azureSubscription. string. Обязательный.

Выберите подписку Azure Resource Manager для развертывания.


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

Выберите тип приложения-функции Azure для развертывания.


appName - имя приложения Функции Azure
string. Обязательный.

Укажите имя существующего приложения Функции Azure. Список приложений-функций будет основан на выбранном типе приложения.


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

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

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

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


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

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

Вводит или выбирает группу ресурсов Azure, содержащую указанный выше Служба приложений Azure.


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

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


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

Введите или выберите существующий слот, отличный от рабочего слота.


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

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


runtimeStack - Стек среды выполнения
string. Необязательный элемент. Используйте при appType = functionAppLinux. Допустимые значения: DOTNET|6.0, DOTNET-ISOLATED|6.0, DOTNET-ISOLATED|7.0, DOTNET-ISOLATED|8.0, JAVA|8, JAVA|17JAVA|11, , NODE|14JAVA|21, , NODE|16, NODE|18, , NODE|20PYTHON|3.8, PYTHON|3.9, PYTHON|3.10, . PYTHON|3.11

Укажите платформу и версию приложения-функции. Вы можете использовать любую из поддерживаемых версий среды выполнения. Старые значения, такие как DOCKER|microsoft/azure-functions-* , являются устаревшими. Новые значения перечислены в раскрывающемся списке в помощник задачи. Если в поддерживаемых версиях среды выполнения есть более новая версия платформы, ее можно указать, даже если она отсутствует в списке.


runtimeStack - Стек среды выполнения
string. Необязательный элемент. Используйте при appType = functionAppLinux. Допустимые значения: DOTNET|2.2 (DOTNET|2.2 (functionapp версии 2)), DOTNET|3.1 (DOTNET|3.1 (functionapp версии 3)), DOTNET|6.0 (DOTNET|6.0 (functionapp v4)), DOTNET-ISOLATED|7.0 (DOTNET-ISOLATED|7.0 (functionapp версии 4)), JAVA|8 (JAVA|8 (functionapp v2/v3/v4)), JAVA|11 (JAVA|11 (functionapp v3/v4)), NODE|8 (NODE|8 (functionapp v2)), NODE|10 (NODE|10 (functionapp версии 2/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 версии 2/v3)), PYTHON|3.7 (PYTHON|3.7 (functionapp v2/v3/v4)), PYTHON|3.8 (PYTHON|3.8 (functionapp версии 3/v4)), PYTHON|3.9 (PYTHON|3.9 (functionapp версии 3/v4)), PYTHON|3.10 (PYTHON|3.10 (functionapp версии 3/v4)).

Укажите платформу и версию приложения-функции. Вы можете использовать любую из поддерживаемых версий среды выполнения. Старые значения, такие как DOCKER|microsoft/azure-functions-* , являются устаревшими. Новые значения перечислены в раскрывающемся списке в помощник задачи. Если в поддерживаемых версиях среды выполнения есть более новая версия платформы, ее можно указать, даже если она отсутствует в списке.


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

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


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

Выбирает метод развертывания для приложения. Приложения для потребления Linux не поддерживают эту конфигурацию.


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

Выбирает метод развертывания для приложения. Приложения для потребления Linux не поддерживают эту конфигурацию.s


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

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

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

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

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

Комментарии

Задача "Развертывание функций Azure" используется для обновления Функции Azure развертывания Функций в Azure. Задача работает с кроссплатформенными агентами Azure Pipelines под управлением Windows, Linux или Mac и использует базовые технологии развертывания, такие как RunFromPackage, Zip Deploy и Kudu REST API.

Задача работает для Функции Azure поддерживаемых языков.

Предварительные требования для задачи

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

функции Azure;

Задача используется для развертывания проекта Функции Azure в существующей функции Azure. Приложение-функция Azure должно существовать до запуска задачи. Приложение-функцию Azure можно создать из портал Azure. Кроме того, задачу Azure PowerShell можно использовать для запуска скриптов AzureRM PowerShell для подготовки и настройки приложения-функции Azure.

Задачу можно использовать для развертывания Функции Azure (Windows или Linux).

Подписка Azure

Для развертывания в Azure подписка Azure должна быть связана с Azure Pipelines с помощью вкладки Службы в разделе Администрирование учетной записи. Добавьте подписку Azure для использования в определении Сборка или Release Management, открыв экран Администрирование учетной записи (значок шестеренки в правом верхнем углу экрана), а затем щелкните вкладку Службы.

Создайте конечную точку службы ARM и используйте тип конечной точки azure Resource Manager. Для получения дополнительных сведений выполните действия, указанные по ссылке здесь.

Задача не работает с конечной точкой классической службы Azure и не будет перечислять эти подключения в параметрах задачи.

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

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

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

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

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

  • Если предоставляется сценарий после развертывания, используйте zip-развертывание.
  • Если тип Служба приложений — Веб-приложение в Linux, используйте zip-развертывание.
  • Если указан WAR-файл, используйте War Deploy.
  • Если указан .jar файл, используйте команду Run-From-Zip.
  • Для всех остальных задач используйте команду Выполнить из пакета (с помощью zip-развертывания).

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

REST API Kudu

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

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

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

Запуск из пакета

Запуск из пакета создает тот же пакет развертывания, что и Zip Deploy. Вместо развертывания файлов в папке wwwroot среда выполнения Функций подключает весь пакет. При использовании этого параметра файлы в папке 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 проверка ).

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

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

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

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

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

  2. Нажмите кнопку Дополнительно (...) в разделе Создание параметров web.config для приложений Python, Node.js, Go и Java, чтобы изменить параметры:

    Снимок экрана: параметры создания web.config.

  3. Выберите тип приложения в списке Платформа приложений .

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

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

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

Для выполнения этой задачи требуется подключение службы 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 через прокси-сервер. Узнайте больше о запуске локального агента за веб-прокси.

Не удается выполнить развертывание во внутренней Среда службы приложений с помощью подключения службы Resource Manager Azure и размещенного агента Майкрософт

По умолчанию размещенный агент Майкрософт не будет работать с Среда службы приложений. Вместо этого необходимо настроить частный агент на виртуальной машине, которая находится в той же виртуальной сети, что и Среда службы приложений. Кроме того, настройте частную зону DNS, чтобы обеспечить обмен данными между ресурсами.

Примеры

Ниже приведен пример фрагмента YAML, который развертывает функции Azure в 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

Чтобы развернуть функцию в Linux, добавьте appType параметр и присвойте ему значение appType: functionAppLinux. Если значение не указано, functionApp по умолчанию используется значение .

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

Пошаговое руководство по созданию конвейера CI/CD см. в разделе Сборка и развертывание Java в Функции Azure.

Требования

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