Show commit id in ASP.NET project at runtime
Jan 1, 2023<
>
Recently I wanted to add the commit id to an ASP.NET build to inspect the id during runtime.
One simple way was to extend the project file (.csproj
) so that a file called current-commit.txt
is written. This file contains the commit id of the current git head. Furthermore this file is copied to the output and publish directory.
<Target Name="create file with commit id" BeforeTargets="Build">
<!-- Get the current git commit id and write a file -->
<Exec Command="git rev-parse HEAD > current-commit.txt" />
</Target>
<ItemGroup Condition="Exists('$(ProjectDir)current-commit.txt')" >
<Content Include="$(ProjectDir)current-commit.txt">
<CopyToPublishDirectory />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
From there the file and the contained commit id it can be accessed during runtime. In my project I created a little service that reads the commit id.
public static void AddVersionInfo(this WebApplicationBuilder builder)
{
try
{
const string gitCommitFileName = "current-commit.txt";
var gitCommitId = "undefined";
if (File.Exists(gitCommitFileName))
gitCommitId = File.ReadAllText(gitCommitFileName);
builder.Services.AddSingleton(new VersionInfo {GitCommitId = gitCommitId});
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
Conclusion
With this approach it’s fairly easy to get the commit id the running instance is based on.
But a downside is, that this information is only accessible during runtime. It would be nice to add the commit id as direct property of the project.
</
>