Nerdbank.gitversioning: Builds broken in .NET SDK Alpine Image

Created on 4 Dec 2019  路  2Comments  路  Source: dotnet/Nerdbank.GitVersioning

I am seeing assembly load errors (see below) when referencing the NBGV NuGet package in a project and building it within the official Alpine image of the .NET Core 3.1 SDK.

I prepared a tiny repro repo (馃ぃ).

Any help (including workarounds) would be highly appreciated 馃憤

/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at System.Runtime.Loader.AssemblyLoadContext.ResolveUnmanagedDll(String unmanagedDllName, IntPtr gchManagedAssemblyLoadContext) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.git_libgit2_init() [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.InitializeNativeLibrary() [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods..cctor() [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    --- End of inner exception stack trace --- [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.git_libgit2_opts(Int32 option, UInt32 level, String path) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.Proxy.git_libgit2_opts_set_search_path(ConfigurationLevel level, String path) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.GlobalSettings.SetConfigSearchPaths(ConfigurationLevel level, String[] paths) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.GitExtensions.OpenGitRepo(String pathUnderGitRepo, Boolean useDefaultConfigSearchPaths) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.VersionOracle.Create(String projectDirectory, String gitRepoDirectory, ICloudBuild cloudBuild, Nullable`1 overrideBuildNumberOffset, String projectPathRelativeToGitRepoRoot) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.Tasks.GetBuildVersion.ExecuteInner() [/root/project/nbgv-alpine-issue.csproj]

Build FAILED.

/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018: The "Nerdbank.GitVersioning.Tasks.GetBuildVersion" task failed unexpectedly. [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018: System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:  ---> System.DllNotFoundException: Unable to load shared library '/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/MSBuildCore/../runtimes/alpine-x64/native/libgit2-572e4d8.so' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: Error loading shared library libssl.so.1.0.0: No such file or directory (needed by /root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/MSBuildCore/../runtimes/alpine-x64/native/libgit2-572e4d8.so) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at System.Runtime.Loader.AssemblyLoadContext.InternalLoadUnmanagedDllFromPath(String unmanagedDllPath) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at System.Runtime.Loader.AssemblyLoadContext.LoadUnmanagedDllFromPath(String unmanagedDllPath) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.GitLoaderContext.LoadUnmanagedDll(String unmanagedDllName) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at System.Runtime.Loader.AssemblyLoadContext.ResolveUnmanagedDll(String unmanagedDllName, IntPtr gchManagedAssemblyLoadContext) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.git_libgit2_init() [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.InitializeNativeLibrary() [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods..cctor() [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    --- End of inner exception stack trace --- [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.git_libgit2_opts(Int32 option, UInt32 level, String path) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.Proxy.git_libgit2_opts_set_search_path(ConfigurationLevel level, String path) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.GlobalSettings.SetConfigSearchPaths(ConfigurationLevel level, String[] paths) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.GitExtensions.OpenGitRepo(String pathUnderGitRepo, Boolean useDefaultConfigSearchPaths) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.VersionOracle.Create(String projectDirectory, String gitRepoDirectory, ICloudBuild cloudBuild, Nullable`1 overrideBuildNumberOffset, String projectPathRelativeToGitRepoRoot) [/root/project/nbgv-alpine-issue.csproj]
/root/.nuget/packages/nerdbank.gitversioning/3.0.28/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.Tasks.GetBuildVersion.ExecuteInner() [/root/project/nbgv-alpine-issue.csproj]
    0 Warning(s)
    1 Error(s)


libgit2

Most helpful comment

This is fixed in 3.1.61-beta

All 2 comments

I ran into the same issue and got around it for the moment by manually installing openssl 1.0 from the Alpine 3.8 repository in the build stage. Looks like Alpine switched to openssl 1.1 in 3.9+, and the image is currently using Alpine 3.10.4.

RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.8/main' >> /etc/apk/repositories
RUN apk --no-cache add openssl==1.0.2u-r0

Not pretty, but seems to work, at least for my use case.

This is fixed in 3.1.61-beta

Was this page helpful?
0 / 5 - 0 ratings