Skip to content

vchirikov/nerdbankgitversioning-docker

Repository files navigation

Example of docker build with Nerdbank.GitVersioning

More info in the blog post here

How to run

See build.ps1.

./GenerateNerdbankGitVersioningTargets.ps1
docker build -t nerdbankgitversioning-docker .
docker run -it nerdbankgitversioning-docker

Proof:

PS nerdbankgitversioning-docker> .\build.ps1

Nerdbank.GitVersioning is found with version 3.1.74
gitNativeLib is C:\Users\####\.nuget\packages\nerdbank.gitversioning\3.1.74\build\MSBuildFull\lib\win32\x64\git2-106a5f2.dll
Nerdbank.GitVersioning.target has been generated. Version: 1.2.0-g3387fd57b2
Sending build context to Docker daemon  11.26kB
Step 1/8 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1-alpine as base
 ---> 90e3f484b56c
Step 2/8 : WORKDIR /src
 ---> Running in 7c7d57632800
Removing intermediate container 7c7d57632800
 ---> e742593837ba
Step 3/8 : COPY *.csproj *.props *.targets *.sln ./
 ---> 108b4976f55c
Step 4/8 : RUN dotnet restore -p:Configuration=Release
 ---> Running in 5ab2f2eafb37
  Restore completed in 2.35 min for /src/DockerExampleWithNerdbankGitVersioning.csproj.
Removing intermediate container 5ab2f2eafb37
 ---> 24e96cde2f28
Step 5/8 : COPY ./ ./
 ---> 71330579c154
Step 6/8 : RUN dotnet publish -c Release -o /app --no-restore
 ---> Running in 7a9394240f54
Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  DockerExampleWithNerdbankGitVersioning -> /src/bin/Release/netcoreapp3.1/DockerExampleWithNerdbankGitVersioning.dll
  DockerExampleWithNerdbankGitVersioning -> /app/
Removing intermediate container 7a9394240f54
 ---> a77547073514
Step 7/8 : WORKDIR /app
 ---> Running in d987c8105e5b
Removing intermediate container d987c8105e5b
 ---> a39680477d56
Step 8/8 : ENTRYPOINT ["dotnet", "DockerExampleWithNerdbankGitVersioning.dll"]
 ---> Running in 0722d0ea128d
Removing intermediate container 0722d0ea128d
 ---> 16c4dc25fe68
Successfully built 16c4dc25fe68
Successfully tagged nerdbankgitversioning-docker:latest
AssemblyVersion is 1.2.0.34611

As you can see, AssemblyVersion has been generated by Nerdbank.GitVersioning.

Let's check that .git directory doesn't exist.

PS nerdbankgitversioning-docker> docker run -it --entrypoint /bin/sh 16c4dc25fe68

/app # ls -a1 /src
.
..
Directory.Build.targets
DockerExampleWithNerdbankGitVersioning.csproj
Nerdbank.GitVersioning.targets
Packages.props
Program.cs
bin
obj
version.json