Неправильный вывод из сборки Service Fabric в Azure DevOps

#build #azure-devops #azure-service-fabric #azure-pipelines

#сборка #azure-devops #azure-service-fabric #azure-конвейеры

Вопрос:

В настоящее время я создаю сборку Azure DevOps для своего приложения Service fabric. На моем локальном компьютере этапы сборки, упаковки и публикации работают так, как ожидалось.

Но когда я запускаю шаблон сборки Azure service fabric в Azure DevOps, сгенерированный вывод неверен. Пакет службы не содержит my .exe в папке code, вместо этого папка содержит корневую папку my .sfproj .

На этапе сборки и упаковки .sfproj вывода я вижу, что служба получает сборку.

Текущая сборка выглядит следующим образом:
— Использовать NuGet
— Восстановить NuGet
— Build .sln
— Build .sfproj — копировать файлы pdf
— Удалить файлы *.pdbs
— Обновить манифест Service fabric
— Скопировать файлы сборки
— Опубликовать артефакт

То, что я уже пробовал:
— Реализовать сборку шаблона Service fabric в DevOps.
— Пробовал следовать нескольким руководствам в Интернете.
— Попытался разобраться в том, что происходит и как это происходит.
— Попытался запустить локальную сборку PowerShell (возможно, что-то было не так с моими файлами), эта сборка прошла успешно с правильным выводом.

Результат, который я ожидаю от сборки:

 >D:TEMPMYAPPLICATIONTYPE
>>ApplicationManifest.xml
>>>MyServiceManifest
>>>>ServiceManifest.xml  
>>>MyCode  
>>>> - MyServiceHost.exe   
>>>MyConfig  
>>>> - Settings.xml  
>>>MyData  
>>>> - init.dat'
  

Вывод, который я получаю из сборки:

 >D:TEMPMYAPPLICATIONTYPE
>>ApplicationManifest.xml
>>>MyServiceManifest
>>>>ServiceManifest.xml  
>>>MyCode  
>>>> - ApplicationPackageRoot  
    - ApplicationParameters  
    - obj  
   - PublishProfiles  
   - Scripts  
    - Packages.config  
    - ServiceFabricApplication.sfproj  
    - ServiceFabricApplication.sfproj.log   
>>>MyConfig  
>>>> - Settings.xml  
>>>MyData  
>>>> - init.dat'
  

На этапе выпуска возникает следующая ошибка, которая не возникает при локальной публикации:

 `2019-04-08T14:31:51.9203463Z Service fabric SDK version: 2.4.164.9494.
2019-04-08T14:31:52.4143574Z ##[debug]INPUT_USEDIFFPACKAGE: 'false'
2019-04-08T14:31:52.5363270Z ##[debug]MAILPROCESSINGSERVICE_INSTANCECOUNT (empty)
2019-04-08T14:31:52.5383524Z ##[debug]INPUT_OVERWRITEBEHAVIOR: 'SameAppTypeAndVersion'
2019-04-08T14:31:53.5679860Z ##[debug]Join-Path "C:Program FilesMicrosoft Service Fabricbinfabricfabric.code" "ServiceFabricServiceModel.xsd"
2019-04-08T14:31:53.5726035Z ##[debug]C:Program FilesMicrosoft Service Fabricbinfabricfabric.codeServiceFabricServiceModel.xsd
2019-04-08T14:31:53.5738046Z ##[debug]Length: 94
2019-04-08T14:31:53.5757439Z ##[debug]
2019-04-08T14:31:53.5780120Z ##[debug]Test-Path "C:Program FilesMicrosoft Service Fabricbinfabricfabric.codeServiceFabricServiceModel.xsd"
2019-04-08T14:31:53.5819217Z ##[debug]True
2019-04-08T14:31:53.5832941Z ##[debug]
2019-04-08T14:31:55.9628794Z ##[debug]System.Fabric.Management.ImageBuilder.FabricImageBuilderValidationException: Exception while parsing XML file: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
2019-04-08T14:31:55.9641825Z ##[debug]FileName: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml ---> System.InvalidOperationException: There is an error in XML document (2, 254). ---> System.Xml.Schema.XmlSchemaValidationException: The 'ManifestId' attribute is not declared.
2019-04-08T14:31:55.9655413Z ##[debug]   at System.Xml.Schema.XmlSchemaValidator.SendValidationEvent(XmlSchemaValidationException e, XmlSeverityType severity)
2019-04-08T14:31:55.9668097Z ##[debug]   at System.Xml.Schema.XmlSchemaValidator.SendValidationEvent(String code, String arg)
2019-04-08T14:31:55.9680818Z ##[debug]   at System.Xml.Schema.XmlSchemaValidator.ValidateAttribute(String lName, String ns, XmlValueGetter attributeValueGetter, String attributeStringValue, XmlSchemaInfo schemaInfo)
2019-04-08T14:31:55.9694803Z ##[debug]   at System.Xml.XsdValidatingReader.ValidateAttributes()
2019-04-08T14:31:55.9707640Z ##[debug]   at System.Xml.XsdValidatingReader.ProcessElementEvent()
2019-04-08T14:31:55.9846731Z ##[debug]   at System.Xml.XsdValidatingReader.Read()
2019-04-08T14:31:55.9860420Z ##[debug]   at System.Xml.XmlReader.MoveToContent()
2019-04-08T14:31:55.9876589Z ##[debug]   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read395_ApplicationManifest()
2019-04-08T14:31:55.9889383Z ##[debug]   --- End of inner exception stack trace ---
2019-04-08T14:31:55.9903452Z ##[debug]   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
2019-04-08T14:31:55.9919035Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.ReadXml[T](String fileName, XmlReader reader)
2019-04-08T14:31:55.9936054Z ##[debug]   --- End of inner exception stack trace ---
2019-04-08T14:31:55.9945480Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.TraceAndThrowValidationErrorWithFileName(Exception innerException, String type, String fileName, String format, Object[] args)
2019-04-08T14:31:55.9958172Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.ReadXml[T](String fileName, XmlReader reader)
2019-04-08T14:31:55.9971320Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.ReadXml[T](String fileName, XmlReaderSettings validatingXmlReaderSettings)
2019-04-08T14:31:55.9984222Z ##[debug]   at System.Fabric.Management.ImageBuilder.ApplicationProvisionOperation.<ParseApplicationPackageAsync>d__8.MoveNext()
2019-04-08T14:31:55.9996678Z ##[debug]--- End of stack trace from previous location where exception was thrown ---
2019-04-08T14:31:56.0009376Z ##[debug]   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
2019-04-08T14:31:56.0022409Z ##[debug]   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
2019-04-08T14:31:56.0035985Z ##[debug]   at System.Fabric.Management.ImageBuilder.ApplicationProvisionOperation.<ProvisionApplicationAsync>d__0.MoveNext()
2019-04-08T14:31:57.8717259Z ##[debug]SYSTEM_JOBID: '7541fd7f-879e-4baf-a7a6-9e527906c514'
2019-04-08T14:31:58.3025935Z ##[debug]Processed: ##vso[telemetry.publish area=TaskHub;feature=ServiceFabricDeploy]{"OperationId":"TestApplicationPackage","ExceptionData":"System.Fabric.Management.ImageBuilder.FabricImageBuilderValidationException;System.InvalidOperationException;System.Xml.Schema.XmlSchemaValidationException;|D:\a\_tasks\ServiceFabricDeploy_c6650aa0-185b-11e6-a47d-df93e7a34c64\1.7.31\ServiceFabricSDK\Publish-NewServiceFabricApplication.ps1|243","JobId":"7541fd7f-879e-4baf-a7a6-9e527906c514","SDKVersion":"2.4.164.9494"}
2019-04-08T14:31:58.8521847Z ##[debug]Leaving D:a_tasksServiceFabricDeploy_c6650aa0-185b-11e6-a47d-df93e7a34c641.7.31deploy.ps1.
2019-04-08T14:31:58.8569063Z ##[debug]Caught exception from task script.
2019-04-08T14:31:58.8613132Z ##[debug]Error record:
2019-04-08T14:31:58.9458146Z ##[debug]Test-ServiceFabricApplicationPackage : Exception while parsing XML file: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
2019-04-08T14:31:58.9475003Z ##[debug]FileName: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
2019-04-08T14:31:58.9487449Z ##[debug]At D:a_tasksServiceFabricDeploy_c6650aa0-185b-11e6-a47d-df93e7a34c641.7.31ServiceFabricSDKPublish-NewServiceFabricApplication.ps1:243 char:46
2019-04-08T14:31:58.9501612Z ##[debug]  ... tionSuccess = (Test-ServiceFabricApplicationPackage $AppPkgPathToUse)
2019-04-08T14:31:58.9516184Z ##[debug]                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-04-08T14:31:58.9544781Z ##[debug]      CategoryInfo          : InvalidOperation: (:) [Test-ServiceFabricApplica    tionPackage], FabricImageBuilderValidationException
2019-04-08T14:31:58.9559184Z ##[debug]      FullyQualifiedErrorId : TestApplicationPackageErrorId,Microsoft.ServiceF    abric.Powershell.TestApplicationPackage
2019-04-08T14:31:58.9575586Z ##[debug] 
2019-04-08T14:31:58.9596675Z ##[debug]Script stack trace:
2019-04-08T14:31:58.9642005Z ##[debug]at Publish-NewServiceFabricApplication, D:a_tasksServiceFabricDeploy_c6650aa0-185b-11e6-a47d-df93e7a34c641.7.31ServiceFabricSDKPublish-NewServiceFabricApplication.ps1: line 243
2019-04-08T14:31:58.9655696Z ##[debug]at <ScriptBlock>, D:a_tasksServiceFabricDeploy_c6650aa0-185b-11e6-a47d-df93e7a34c641.7.31deploy.ps1: line 194
2019-04-08T14:31:58.9674225Z ##[debug]at <ScriptBlock>, <No file>: line 1
2019-04-08T14:31:58.9687438Z ##[debug]at <ScriptBlock>, <No file>: line 22
2019-04-08T14:31:58.9713344Z ##[debug]at <ScriptBlock>, <No file>: line 18
2019-04-08T14:31:58.9723271Z ##[debug]at <ScriptBlock>, <No file>: line 1
2019-04-08T14:31:58.9745709Z ##[debug]Exception:
2019-04-08T14:31:58.9793977Z ##[debug]System.Fabric.Management.ImageBuilder.FabricImageBuilderValidationException: Exception while parsing XML file: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
2019-04-08T14:31:58.9805388Z ##[debug]FileName: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml ---> System.InvalidOperationException: There is an error in XML document (2, 254). ---> System.Xml.Schema.XmlSchemaValidationException: The 'ManifestId' attribute is not declared.
2019-04-08T14:31:58.9818107Z ##[debug]   at System.Xml.Schema.XmlSchemaValidator.SendValidationEvent(XmlSchemaValidationException e, XmlSeverityType severity)
2019-04-08T14:31:58.9829274Z ##[debug]   at System.Xml.Schema.XmlSchemaValidator.SendValidationEvent(String code, String arg)
2019-04-08T14:31:58.9840639Z ##[debug]   at System.Xml.Schema.XmlSchemaValidator.ValidateAttribute(String lName, String ns, XmlValueGetter attributeValueGetter, String attributeStringValue, XmlSchemaInfo schemaInfo)
2019-04-08T14:31:58.9851940Z ##[debug]   at System.Xml.XsdValidatingReader.ValidateAttributes()
2019-04-08T14:31:58.9863424Z ##[debug]   at System.Xml.XsdValidatingReader.ProcessElementEvent()
2019-04-08T14:31:58.9877769Z ##[debug]   at System.Xml.XsdValidatingReader.Read()
2019-04-08T14:31:58.9891850Z ##[debug]   at System.Xml.XmlReader.MoveToContent()
2019-04-08T14:31:58.9906079Z ##[debug]   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read395_ApplicationManifest()
2019-04-08T14:31:58.9917176Z ##[debug]   --- End of inner exception stack trace ---
2019-04-08T14:31:58.9928302Z ##[debug]   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
2019-04-08T14:31:58.9939501Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.ReadXml[T](String fileName, XmlReader reader)
2019-04-08T14:31:58.9950819Z ##[debug]   --- End of inner exception stack trace ---
2019-04-08T14:31:58.9962116Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.TraceAndThrowValidationErrorWithFileName(Exception innerException, String type, String fileName, String format, Object[] args)
2019-04-08T14:31:58.9973510Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.ReadXml[T](String fileName, XmlReader reader)
2019-04-08T14:31:58.9984837Z ##[debug]   at System.Fabric.Management.ImageBuilder.ImageBuilderUtility.ReadXml[T](String fileName, XmlReaderSettings validatingXmlReaderSettings)
2019-04-08T14:31:58.9998358Z ##[debug]   at System.Fabric.Management.ImageBuilder.ApplicationProvisionOperation.<ParseApplicationPackageAsync>d__8.MoveNext()
2019-04-08T14:31:59.0007662Z ##[debug]--- End of stack trace from previous location where exception was thrown ---
2019-04-08T14:31:59.0020745Z ##[debug]   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
2019-04-08T14:31:59.0032029Z ##[debug]   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
2019-04-08T14:31:59.0045270Z ##[debug]   at System.Fabric.Management.ImageBuilder.ApplicationProvisionOperation.<ProvisionApplicationAsync>d__0.MoveNext()
2019-04-08T14:31:59.0363118Z ##[error]Exception while parsing XML file: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
FileName: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
2019-04-08T14:31:59.0371868Z ##[debug]Processed: ##vso[task.logissue type=error]Exception while parsing XML file: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
FileName: C:UsersVssAdministratorAppDataLocalTempTestApplicationPackage_31174153637r5wofi1j.xyhapplicationpackageApplicationManifest.xml
2019-04-08T14:31:59.0373492Z ##[debug]Processed: ##vso[task.complete result=Failed]`
  

Комментарии:

1. Что MSBuild Arguments вы используете для сборки .sfproj и .sln ?

2. Для .sln используются следующие аргументы: /p:RunInBuild=true Для .sfproj используются следующие аргументы: /t:Package /p:PackageLocation=$(build.artifactstagingdirectory)Applicationapplicationpackage

Ответ №1:

Если вы BuildPlatform установили значение Any CPU или x32 измените его на x64 в Azure DevOps для обоих .sln и .sfproj , и это должно сработать.

Комментарии:

1. Я не могу изменить .sln на x64, потому что он содержит несколько, .csproj которые должны быть AnyCPU . Нужно ли создавать отдельную сборку специально для приложения Service Fabric?

2. Нет, вам не нужно создавать отдельную сборку. Если вы не можете изменить .sln сборку, чтобы x64 изменить только .sfproj сборку.

3. У .sfproj есть зависимости в остальной части решения, это затрудняет простое изменение .sfproj В настоящее время я пытаюсь получить эту настройку, но на данный момент я продолжаю получать ошибку за ошибкой. Когда я получу успешную сборку, я отправлю ответ сюда.

4. Вы должны собрать его в 64 бита, иначе он не будет работать, и вы получите такие странные ошибки, как эти.

Ответ №2:

Хорошо, проблема со сборкой вроде как исправлена.

Было невозможно переписать все решение на x64 или создать службу для x64. То, что я сделал, было следующим:

  1. Создайте .sfproj
  2. Скопируйте артефакты проекта в промежуточный каталог.
  3. Удалите все элементы из application/code папки в промежуточном артефакте.
  4. Создайте службу отдельно от ‘.sfproj’.
  5. Скопируйте выходные данные сборки сервиса в .sfproj пакет кода.

Далее, что касается проблем с выпуском, проблема заключалась в том, что другой .csproj использовал hosted агент. .sfproj По какой-то причине требуется hosted vs2017 агент. Просто добавив вторую фазу агента, которая использует этот агент, исправляет выпуск.

Я надеюсь, что это может помочь людям, которые сталкиваются с теми же проблемами, что и я.