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.
#isFlexConsumption: false # boolean. Is Function App on Flex Consumption Plan. Default: false.
appName: # string. Required. Azure Functions App name.
#deployToSlotOrASE: false # boolean. Optional. Use when appType != "" && isFlexConsumption = false. 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 && isFlexConsumption = false. Runtime stack.
# Application and Configuration Settings
#appSettings: # string. App settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && isFlexConsumption = false && 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 для развертывания.
типа приложения
string
. Обязательно. Допустимые значения: functionApp
(приложение-функция в Windows), functionAppLinux
(приложение-функция в Linux).
Выберите тип приложения-функции Azure для развертывания.
isFlexConsumption
-
— приложение-функция в плане потребления Flex
boolean
. Значение по умолчанию: false
.
Установите значение true
, если приложение-функция находится в плане потребления Flex.
appName
-
имя приложения функций Azure
string
. Обязательно.
Укажите имя существующего приложения функций Azure. Перечисленные приложения-функции будут основаны на выбранном типе приложения.
deployToSlotOrASE
-
развертывание в слоте или среде службы приложений
boolean
. Необязательный. Используется при appType != "" && isFlexConsumption = false
. Значение по умолчанию: false
.
Развертывается в существующем слоте развертывания или среде службы приложений Azure. Для обоих целевых объектов задача должна иметь имя группы ресурсов.
Если целевой объект развертывания является слотом, он по умолчанию будет использоваться для рабочего слота. Можно также указать любое другое существующее имя слота.
Если целевой объект развертывания является средой службы приложений Azure, оставьте имя слота как рабочей и укажите имя группы ресурсов.
deployToSlotOrASE
-
развертывание в слоте или среде службы приложений
boolean
. Необязательный. Используется при appType != ""
. Значение по умолчанию: false
.
Развертывается в существующем слоте развертывания или среде службы приложений Azure. Для обоих целевых объектов задача должна иметь имя группы ресурсов.
Если целевой объект развертывания является слотом, он по умолчанию будет использоваться для рабочего слота. Можно также указать любое другое существующее имя слота.
Если целевой объект развертывания является средой службы приложений Azure, оставьте имя слота как рабочей и укажите имя группы ресурсов.
группы ресурсов
string
. Требуется, если deployToSlotOrASE = true
.
Имя группы ресурсов требуется, если целевой объект развертывания является слотом развертывания или средой службы приложений.
Введите или выбирает группу ресурсов Azure, содержащую указанную выше службу приложений Azure.
слота
string
. Требуется, если deployToSlotOrASE = true
. Значение по умолчанию: production
.
Введите или выбирает существующий слот, за исключением рабочего слота.
слота
string
. Требуется, если deployToSlotOrASE = true
. Значение по умолчанию: production
.
Введите или выберите существующий слот, отличный от рабочего слота.
package
-
пакет или папка
string
. Обязательно. Значение по умолчанию: $(System.DefaultWorkingDirectory)/**/*.zip
.
Путь к пакету или папке, содержащей содержимое службы приложений, созданное MSBuild или сжатым ZIP-файлом. Поддерживаются переменные (сборки | выпуска) и подстановочные знаки. Например, $(System.DefaultWorkingDirectory)/**/*.zip
.
стека среды выполнения
string
. Необязательный. Используется при appType = functionAppLinux && isFlexConsumption = false
. Допустимые значения: 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
, DOTNET-ISOLATED|8.0
NODE|16
, NODE|18
, NODE|20
, PYTHON|3.8
, PYTHON|3.9
, PYTHON|3.10
, PYTHON|3.11
.
Укажите платформу и версию приложения-функции. Вы можете использовать любую из поддерживаемых версий среды выполнения . Устаревшие значения, такие как DOCKER|microsoft/azure-functions-*
, устарели. Новые значения перечислены в раскрывающемся списке в помощнике по задачам. Если в поддерживаемых версиях среды выполнения есть более новая версия платформы, ее можно указать, даже если она отсутствует в списке.
Заметка
В настоящее время это значение не обновляет linuxFxVersion, на котором запущен сайт. Это означает, что вы не можете обновить стек с узла 18 до узла 20. В настоящее время задача обновляет только параметры приложения.
стека среды выполнения
string
. Необязательный. Используется при appType = functionAppLinux
. Допустимые значения:
Укажите платформу и версию приложения-функции. Вы можете использовать любую из поддерживаемых версий среды выполнения . Устаревшие значения, такие как DOCKER|microsoft/azure-functions-*
, устарели. Новые значения перечислены в раскрывающемся списке в помощнике по задачам. Если в поддерживаемых версиях среды выполнения есть более новая версия платформы, ее можно указать, даже если она отсутствует в списке.
параметров приложения
string
.
Введите параметры приложения с помощью синтаксиса -key value
(например, -Port 5000
-RequestTimeout 5000
-WEBSITE_TIME_ZONE
). Заключайте значения, содержащие пробелы в двойных кавычках (например, "Eastern Standard Time"
).
Дополнительные сведения о параметрах приложения см. в переменных среды и параметров приложения в службе приложений Azure.
метод развертывания deploymentMethod
-
string
. Требуется, если appType != "" && isFlexConsumption = false && appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Допустимые значения: auto
(автоматическое обнаружение), zipDeploy
(ZIP-развертывание), runFromPackage
(ZIP-развертывание с пакетом). Значение по умолчанию: auto
.
Указывает метод развертывания для приложения. Приложения потребления Linux не поддерживают эту конфигурацию.
метод развертывания deploymentMethod
-
string
. Требуется, если appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Допустимые значения: auto
(автоматическое обнаружение), zipDeploy
(ZIP-развертывание), runFromPackage
(ZIP-развертывание с пакетом). Значение по умолчанию: auto
.
Указывает метод развертывания для приложения. Приложения потребления Linux не поддерживают эту конфигурацию.
метод развертывания deploymentMethod
-
string
. Требуется, если appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Допустимые значения: auto
(автоматическое обнаружение), zipDeploy
(ZIP-развертывание), runFromPackage
(ZIP-развертывание с пакетом). Значение по умолчанию: auto
.
Выбирает метод развертывания для приложения. Приложения потребления Linux не поддерживают эту конфигурацию.s
Параметры управления задачами
Все задачи имеют параметры управления в дополнение к входным данным задачи. Дополнительные сведения см. в разделе Параметры управления и общие свойства задач.
Выходные переменные
Эта задача определяет следующие выходные переменные, которые можно использовать в подчиненных шагах, заданиях и этапах.
AppServiceApplicationUrl
URL-адрес приложения для выбранного приложения-функции Azure.
Замечания
Задача развертывания функций Azure используется для обновления Функций Azure для развертывания Функций в Azure. Задача работает на кроссплатформенных агентах Azure Pipelines под управлением Windows, Linux или Mac и использует базовые технологии развертывания RunFromPackage, Zip Deploy и REST API Kudu.
Задача работает для поддерживаемых языков функций Azure .
Предварительные требования для задачи
Для правильной работы задачи необходимо настроить следующие предварительные требования.
Функция Azure
Задача используется для развертывания проекта Функций Azure в существующей функции Azure. Приложение-функция Azure должно существовать перед выполнением задачи. Приложение-функция Azure можно создать на портале Azure . Кроме того, задачи Azure PowerShell
Задачу можно использовать для развертывания функций Azure (Windows/Linux).
Подписка Azure
Чтобы развернуть в Azure, подписка Azure должна быть связана с Azure Pipelines с помощью вкладки "Службы" в разделе "Администрирование учетной записи". Добавьте подписку Azure для использования в определении "Управление сборкой или выпуском", открыв экран администрирования учетной записи (значок шестеренки в правом верхнем углу экрана), а затем щелкните вкладку "Службы".
Создайте конечную точку службы ARM
Задача не работает с конечной точкой классической службы Azure, и она не будет перечислять эти подключения в параметрах задачи.
Методы развертывания
В этой задаче доступны несколько методов развертывания.
Чтобы изменить параметр развертывания на основе пакетов в задаче конструктора, разверните дополнительные параметры развертывания и включите выбор метода развертывания.
В зависимости от типа службы приложений Azure и агента Azure Pipelines задача использует подходящую технологию развертывания. Технологии развертывания, используемые задачами, приведены ниже.
По умолчанию задача пытается выбрать соответствующую технологию развертывания на основе входного пакета, типа службы приложений и операционной системы агента.
- Если предоставляется скрипт после развертывания, используйте ZIP-развертывание.
- Если тип службы приложений является веб-приложением в Linux, используйте ZIP-развертывание.
- Если предоставляется WAR-файл, используйте War Deploy.
- Если указан файл .jar, используйте run-From-Zip.
- Для всех остальных задач используйте пакет запуска из пакета (с помощью zip-развертывания).
В агенте, отличном от Windows (для любого типа службы приложений), задача зависит от REST API Kudu для развертывания веб-приложения.
Kudu REST API
Развертывание 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
в конвейере сборки или выпуска, чтобы устранить ошибку.
Выпуск зависает в течение длительного времени, а затем завершается сбоем
Эта проблема может быть результатом нехватки емкости в плане службы приложений. Чтобы устранить эту проблему, можно увеличить масштаб экземпляра службы приложений, чтобы увеличить доступное количество ЦП, ОЗУ и дискового пространства или попробовать использовать другой план службы приложений.
Коды ошибок 5xx
Если вы видите ошибку 5
Функция Azure внезапно перестала работать
Функции Azure могут внезапно перестать работать, если с момента последнего развертывания прошло более одного года. При развертывании с помощью RunFromPackage в deploymentMethod создается SAS с датой окончания срока действия 1 года и задает значение "WEBSITE_RUN_FROM_PACKAGE" в конфигурации приложения. Функции Azure используют этот SAS для ссылки на файл пакета для выполнения функции, поэтому если истек срок действия SAS, функция не будет выполнена. Чтобы устранить эту проблему, разверните еще раз, чтобы создать SAS с датой окончания срока действия в течение одного года.
Ошибка: пакет не найден с указанным шаблоном
Проверьте, публикуется ли пакет, упомянутый в задаче, как артефакт в сборке или предыдущем этапе и скачан в текущем задании.
Ошибка. Публикация с помощью параметра zip-развертывания не поддерживается для типа пакета msBuild
Веб-пакеты, созданные с помощью задачи MSBuild (с аргументами по умолчанию), имеют вложенную структуру папок, которая может быть развернута правильно только с помощью веб-развертывания. Параметр развертывания публикации в ZIP не может использоваться для развертывания этих пакетов. Чтобы преобразовать структуру упаковки, выполните следующие действия.
В задаче решения сборки измените аргументы MSBuild на
/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent"
:Добавьте задачу "Архив" и измените значения следующим образом:
Измените корневую папку или файл, чтобы архивировать на
$(System.DefaultWorkingDirectory)\\WebAppContent
.Снимите имя корневой папки prepend, чтобы архивировать пути флажок:
Развертывание приложения-функции в Windows завершается успешно, но приложение не работает
Эта проблема может возникнуть, если файл web.config отсутствует в приложении. Вы можете добавить файл web.config в источник или автоматически создать его с помощью параметров приложения и конфигурации задачи.
Выберите задачу и перейдите к создать параметры web.config для Python, Node.js, приложений Go и Java:
Нажмите кнопку "Дополнительно" (...) в разделе Создание параметров web.config для Python, Node.js, приложений Go и Java для изменения параметров:
Выберите тип приложения в списке платформы приложений
. Нажмите кнопку ОК. Это приведет к заполнению параметров web.config, необходимых для создания файла web.config.
Часто задаваемые вопросы
Как настроить подключение службы?
Для этой задачи требуется подключение службы 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 через прокси-сервер. Узнайте больше о запуске локального агента за веб-прокси.
Не удается развернуть в внутренней среде службы приложений с помощью подключения службы Azure Resource Manager и агента, размещенного корпорацией Майкрософт
По проектированию агент, размещенный корпорацией Майкрософт, не будет работать с средой службы приложений. Вместо этого необходимо настроить частный агент на виртуальной машине, которая находится в той же виртуальной сети, что и среда службы приложений. Кроме того, задайте частную зону 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 |
требования | Никакой |
возможностей |
Эта задача не удовлетворяет требованиям к последующим задачам в задании. |
ограничения команд | Любой |
переменные settable | Любой |
Версия агента | 2.104.1 или более поздней версии |
Категория задач | Развертывать |