Azure / service-fabric-mesh-preview

Service Fabric Mesh is the Service Fabric's serverless offering to enable developers to deploy containerized applications without managing infrastructure. Service Fabric Mesh , aka project “SeaBreeze” is currently available in private preview. This repository will be used for tracking bugs/feature requests as GitHub issues and for maintaining the latest documentation.
MIT License
82 stars 12 forks source link

Enabling binarylogger fails the build #285

Closed bjorkstromm closed 5 years ago

bjorkstromm commented 5 years ago

Steps to reproduce:

  1. Clone the samples repo
  2. Open developer command prompt
  3. cd to todolistapp
  4. run msbuild /t:build /p:configuration=Release;platform="Any Cpu" /bl This will give following errors:
    
    "C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\todolistapp.sln" (build target) (1) ->
    "C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\todolistapp\todolistapp.sfaproj" (default target) (2) ->
    "C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\WebFrontEnd\WebFrontEnd.csproj" (SFAppBuildServiceProject target) (3) ->
    (SFAppBuildServiceProject target) ->
    C:\Users\mb\.nuget\packages\microsoft.visualstudio.azure.sfapp.targets\1.0.0-preview.4.4\build\Microsoft.VisualStudio.Azure.SFApp.Targets.targets(118,5): error S
    FA1003: Building dockerfile 'C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\WebFrontEnd\Dockerfile' failed. [C:\Users\mb\src\gh\service-fabric-mesh\src\tod
    olistapp\WebFrontEnd\WebFrontEnd.csproj]

"C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\todolistapp.sln" (build target) (1) -> "C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\todolistapp\todolistapp.sfaproj" (default target) (2) -> "C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\ToDoService\ToDoService.csproj" (SFAppBuildServiceProject target) (4) -> C:\Users\mb.nuget\packages\microsoft.visualstudio.azure.sfapp.targets\1.0.0-preview.4.4\build\Microsoft.VisualStudio.Azure.SFApp.Targets.targets(118,5): error S FA1003: Building dockerfile 'C:\Users\mb\src\gh\service-fabric-mesh\src\todolistapp\ToDoService\Dockerfile' failed. [C:\Users\mb\src\gh\service-fabric-mesh\src\tod olistapp\ToDoService\ToDoService.csproj]



Removing the `/bl` switch from the `msbuild` command int step 4 will result in an successful build, and docker images are created in local registry.
KirillOsenkov commented 5 years ago

Any chance you could email or DM me the binlog? Thanks!

bjorkstromm commented 5 years ago

@KirillOsenkov sure, sent you DM on Twitter.

KirillOsenkov commented 5 years ago

Where can I install Microsoft.SFApp.Sdk?

KirillOsenkov commented 5 years ago

Found https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started

bjorkstromm commented 5 years ago

:+1: and binlog is in your inbox.

KirillOsenkov commented 5 years ago

More repro steps:

  1. Install docker for windows: https://store.docker.com/editions/community/docker-ce-desktop-windows
  2. Install https://docs.microsoft.com/en-us/azure/service-fabric-mesh/service-fabric-mesh-howto-setup-developer-environment-sdk
  3. Install the VSIX: https://marketplace.visualstudio.com/items?itemName=ms-azuretools.ServiceFabricMesh
KirillOsenkov commented 5 years ago

Seeing this stack when running the task:

>   System.dll!System.Diagnostics.Process.StartWithCreateProcess Line 2138  C#
    System.dll!System.Diagnostics.Process.Start Line 1884   C#
    Microsoft.VisualStudio.Containers.Tools.Common.dll!Microsoft.VisualStudio.Containers.Tools.Common.Client.CommandLineClient.ExecuteCommandLineCoreAsync Line 132 C#
    Microsoft.VisualStudio.Containers.Tools.Common.dll!Microsoft.VisualStudio.Containers.Tools.Common.Client.CommandLineClient.ExecuteCommandLineAsync Line 21  C#
    Microsoft.VisualStudio.Containers.Tools.Common.dll!Microsoft.VisualStudio.Containers.Tools.Common.Client.DockerClient.GetServerOperatingSystemAsync Line 260    C#
    Microsoft.VisualStudio.Containers.Tools.Common.dll!Microsoft.VisualStudio.Containers.Tools.Common.Prerequisites.DockerTargetOSCheckPrerequisite.EvaluateAsync Line 35   C#
    Microsoft.VisualStudio.Azure.SFApp.Shared.dll!Microsoft.VisualStudio.Azure.SFApp.Shared.Build.ServiceProjectBuilder.DockerOSModeMatchesProjectAsync Unknown
    mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Start<Microsoft.VisualStudio.Azure.SFApp.Shared.Build.ServiceProjectBuilder.<DockerOSModeMatchesProjectAsync>d__10> Line 471  C#
    Microsoft.VisualStudio.Azure.SFApp.Shared.dll!Microsoft.VisualStudio.Azure.SFApp.Shared.Build.ServiceProjectBuilder.DockerOSModeMatchesProjectAsync Unknown
    Microsoft.VisualStudio.Azure.SFApp.Shared.dll!Microsoft.VisualStudio.Azure.SFApp.Shared.Build.ServiceProjectBuilder.BuildAsync  Unknown
    mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.VisualStudio.Azure.SFApp.Shared.Build.ServiceProjectBuilder.<BuildAsync>d__9> Line 471  C#
    Microsoft.VisualStudio.Azure.SFApp.Shared.dll!Microsoft.VisualStudio.Azure.SFApp.Shared.Build.ServiceProjectBuilder.BuildAsync  Unknown
    Microsoft.VisualStudio.Azure.SFApp.BuildTasks.dll!Microsoft.VisualStudio.Azure.SFApp.BuildTasks.BuildServiceProject.ExecuteAsync    Unknown
    mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Start<Microsoft.VisualStudio.Azure.SFApp.BuildTasks.BuildServiceProject.<ExecuteAsync>d__17> Line 471 C#
    Microsoft.VisualStudio.Azure.SFApp.BuildTasks.dll!Microsoft.VisualStudio.Azure.SFApp.BuildTasks.BuildServiceProject.ExecuteAsync    Unknown
    Microsoft.VisualStudio.Azure.SFApp.BuildTasks.dll!Microsoft.VisualStudio.Azure.SFApp.BuildTasks.BuildTask.Execute   Unknown
KirillOsenkov commented 5 years ago

OK this is because the BinaryLogger by default creates a temporary file msbuild.ProjectImports.zip in the current directory (where msbuild was invoked from) and keeps it open for the duration of the build. Docker trying to access that and failing.

Workaround: msbuild /t:build /p:configuration=Release;platform="Any Cpu" /bl:C:\outsidelocation\msbuild.binlog

If you specify an absolute path for the .binlog that is outside docker's root directory, then the log will not interfere.

KirillOsenkov commented 5 years ago

@sgreenmsft mentions that another workaround would be to add MSBuild.ProjectImports.zip and msbuild.binlog to .dockerignore

bjorkstromm commented 5 years ago

@KirillOsenkov thank you for your help, really appreciated! I’ll close this issue as it’s not a problem with Service Fabric Mesh.