Я провел последние несколько дней, работая над системой сборки, которая может постоянно развертывать веб-сайт в промежуточной системе на Azure. Я считаю, что я довольно близок к тому, что он работает, однако я получаю сообщение об ошибке, когда Azure пытается создать веб-сайт с помощью расширения MSDeploy.Автоматическое публичное облачное обслуживание Azure с использованием TFS15
Обзор моего процесса:
Использование Team Foundation Server 2015 (самопринятый, не VSO), я создал определение построения, который имеет "Visual Studio Build" шаг:
Это работает MSBuild с аргументами:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true
Это создает Z IP-файл с именем WebRole1.zip, который можно найти на $(Build.ArtifactStagingDirectory)\AzureTestBuilds\WebRole1.zip
Далее, сборка использует скрипт Powershell для подключения к Azure, загрузите выше ZIP-файл в хранилище больших двоичных объектов, а также предоставление сайта с помощью JSON-шаблон. Шаблон имеет следующее расширение MSDeploy для развертывания сайта:
"resources": [
{
"apiVersion": "2014-06-01",
"type": "Extensions",
"name": "MSDeploy",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('WebAPIURL'))]"
],
"properties": {
"packageUri": "[concat(variables('SiteStagingStorageURL'), '/zips/WebRole1.zip', parameters('sasToken'))]",
"dbType": "None",
"connectionString": "",
"setParameters": {
"Application Path": "[variables('WebAPIURL')]"
}
}
}
]
При выполнении сборки, я получаю следующее сообщение об ошибке:
4:21:31 PM - Resource Microsoft.Web/sites/Extensions 'xxx-WebAPI/MSDeploy' failed with message 'The resource operation completed with terminal provisioning state 'Failed'.'
В Куде (диагностика консоли Azure), я вижу более подробная ошибка:
<?xml version="1.0" encoding="utf-8"?>
<entries>
<entry time="2016-02-13T00:21:51.3365955+00:00" type="Message">
<message>Downloading metadata for package path 'zips/WebRole1.zip' from blob 'https://xxx.blob.core.windows.net'</message>
</entry>
<entry time="2016-02-13T00:21:51.8023866+00:00" type="Message">
<message>The blob has flag IsPremiumApp:. IsPremiumApp returns False</message>
</entry>
<entry time="2016-02-13T00:21:51.8805277Z" type="Message">
<message>Downloading package path 'zips/WebRole1.zip' from blob 'https://xxx.blob.core.windows.net'</message>
</entry>
<entry time="2016-02-13T00:21:52.2711541Z" type="Error">
<message>AppGallery Deploy Failed: 'Microsoft.Web.Deployment.DeploymentXmlException: The declared parameter 'Application Path' is not recognized.
at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.LoadFromFile(XPathNavigator nav, String fileName, Boolean ignoreExtraSetParameters)
at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.LoadXml(String xml)
at Microsoft.Web.Deployment.WebApi.AppGalleryPackage.LoadSetParameters(DeploymentObject deploymentObject, IDictionary`2 setParams)
at Microsoft.Web.Deployment.WebApi.AppGalleryPackage.Deploy(String deploymentSite, String siteSlotId)
at Microsoft.Web.Deployment.WebApi.DeploymentController.<DownloadAndDeployPackage>d__b.MoveNext()'</message>
</entry>
</entries>
Из того, что я могу сказать, параметры в XML-манифесту zip неверны. Я потратил много времени на чтение различных блогов и учебников о том, как развернуть сайт на Azure с помощью расширения сборки MSDeploy, но все они используют существующий файл ZIP-файла. Я не могу найти информацию о правильном формате для этих zip-файлов и манифеста XML, а также о том, как создать действительный с помощью MSBuild. Есть ли здесь один шаг? Я рад опубликовать любую необходимую информацию.
Сообщение об ошибке указано «Объявленный параметр« Путь приложения »не распознан», вы пытались изменить параметр «Путь приложения», ? –
Если вы для этого, TFS 2015 Update 2 находится в кандидате на выпуск с лицензией go-live (https: //www.visualstudio.com/news/tfs2015-update2-vs) и включает в себя новые функции управления выпуском веб-версии, доступные в настоящее время на VSTS. Это делает эту вещь действительно легкой и лучшей, вы можете отделить свои процессы сборки и выпуска. – rerwinX
@rerwinRR - О, это выглядит многообещающе. Я запускаю TFS15, задаюсь вопросом, насколько легко процесс обновления. Он работает на виртуальной машине, поэтому я могу просто сделать снимок и вернуться обратно, если я все испортил. –