2016-02-15 2 views
1

Я провел последние несколько дней, работая над системой сборки, которая может постоянно развертывать веб-сайт в промежуточной системе на Azure. Я считаю, что я довольно близок к тому, что он работает, однако я получаю сообщение об ошибке, когда Azure пытается создать веб-сайт с помощью расширения MSDeploy.Автоматическое публичное облачное обслуживание Azure с использованием TFS15

Обзор моего процесса:

Использование Team Foundation Server 2015 (самопринятый, не VSO), я создал определение построения, который имеет "Visual Studio Build" шаг:

enter image description here

Это работает MSBuild с аргументами:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true

Это создает Z IP-файл с именем WebRole1.zip, который можно найти на $(Build.ArtifactStagingDirectory)\AzureTestBuilds\WebRole1.zip

Link to ZIP if anyone cares

Далее, сборка использует скрипт 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.&lt;DownloadAndDeployPackage&gt;d__b.MoveNext()'</message> 
    </entry> 
</entries> 

Из того, что я могу сказать, параметры в XML-манифесту zip неверны. Я потратил много времени на чтение различных блогов и учебников о том, как развернуть сайт на Azure с помощью расширения сборки MSDeploy, но все они используют существующий файл ZIP-файла. Я не могу найти информацию о правильном формате для этих zip-файлов и манифеста XML, а также о том, как создать действительный с помощью MSBuild. Есть ли здесь один шаг? Я рад опубликовать любую необходимую информацию.

+0

Сообщение об ошибке указано «Объявленный параметр« Путь приложения »не распознан», вы пытались изменить параметр «Путь приложения», ? –

+0

Если вы для этого, TFS 2015 Update 2 находится в кандидате на выпуск с лицензией go-live (https: //www.visualstudio.com/news/tfs2015-update2-vs) и включает в себя новые функции управления выпуском веб-версии, доступные в настоящее время на VSTS. Это делает эту вещь действительно легкой и лучшей, вы можете отделить свои процессы сборки и выпуска. – rerwinX

+0

@rerwinRR - О, это выглядит многообещающе. Я запускаю TFS15, задаюсь вопросом, насколько легко процесс обновления. Он работает на виртуальной машине, поэтому я могу просто сделать снимок и вернуться обратно, если я все испортил. –

ответ

0

Выяснил это. Я должен был добавить файл с именем parameters.xml в корневой папке проекта (той же папке, web.config и Global.asax Файл содержит следующее:..

<parameters> 
    <parameter name="Application Path" description="Full site path where you would like to install your application (i.e., Default Web Site/WebRole1)" defaultValue="Default Web Site/WebRole1" tags="iisapp"> 
    <parameterEntry type="ProviderPath" scope="iisapp" match="WebRole1" /> 
    </parameter> 
    <parameter name="SetAclParameter1" description="Hidden - automatically sets write access for the app" defaultValue="{Application Path}/App_Data" tags="Hidden, NoDatabase"> 
    <parameterEntry type="ProviderPath" scope="setAcl" match="WebRole1/App_Data" /> 
    </parameter> 
</parameters> 

Изменение WebRole1 на то, что имя вашего веб-проекта MSDeploy кажется просто получить этот файл автоматически, не нужно изменять какие-либо другие параметры или строить параметры.

0

значения JSON может быть:

A number (integer or floating point) 
A string (in double quotes) 
A Boolean (true or false) 
An array (in square brackets) 
An object (in curly braces) 
null 

Но, кажется, вы используете функции (переменные ('WebAPIURL')) в поле значения. Боюсь, это проблема.

Смежные вопросы