#azure #azure-devops #azure-functions #azure-cli #azure-deployment
#azure #azure-devops #azure-функции #azure-cli #azure-развертывание
Вопрос:
Я использую команду Azure CLI для развертывания кода функции из архивированного артефакта. Вот код, ничего серьезного, просто команда az и местоположение артефакта.
az functionapp deployment source config-zip -g $RGName -n $FnName --src "$(System.DefaultWorkingDirectory)/_Artifacts/drop/EventHubFunction.zip"
Однако, когда я использую это в конвейере, я получаю случайную неустранимую ошибку; т. Е. Конвейер выдает ошибку, но она молча продолжается, и функция развертывается. Мне просто любопытно узнать, что означает эта ошибка и что я могу сделать, чтобы избежать этого. Ошибка, с которой я столкнулся, заключается в,
2019-04-18T13:00:17.7925065Z ##[ошибка]ПРЕДУПРЕЖДЕНИЕ: получение учетных данных сайта scm для развертывания zip
2019-04-18T13:00:20.7587414Z ##[ошибка]ПРЕДУПРЕЖДЕНИЕ: запуск развертывания zip
2019-04-18T13:00:20.7633968Z ##[ошибка]
Пожалуйста, обратите внимание, я использую задачу Azure Powershell, использую вход в систему az с использованием участника-службы, а затем использую развертывание приложения az functionapp. Я мог бы использовать задачу Azure CLI, которую я знаю, но моя логика немного сложнее для извлечения FnName, так как мне нужно перебирать и развертывать несколько экземпляров функции, а задаче Azure CLI не нравится foreach
Комментарии:
1. Можете ли вы попробовать с помощью —debug, чтобы получить дополнительную информацию, связанную с ошибкой.
Ответ №1:
В обычных командах Powershell вы можете использовать CommonParameter -ErrorAction Stop, но для команды AzureCli az, я думаю, вы можете использовать простой оператор if:
if (az login --service-principal -u $ClientId -p $ClientSecret --tenant $TenantId)
{
"Success"
}
else {"Error"}
Или проверьте последнее состояние выхода, используя $? Автоматическая переменная после попытки входа в систему:
if (!$?) {"Error"}
аналогично и для развертывания функции, вы можете добиться этого.Также попробуйте использовать оператор —query для проверки того, что вам нужно. Например.
# Create the Web App if it does not already exist
if(-Not (az webapp show --name $webAppName --resource-group $resourceGroupName))
{
az webapp create --name $webAppName --resource-group $resourceGroupName --plan $servicePlanName --tags 'displayName=WebApp'
}
Надеюсь, это поможет.