In a previous post, I wrote about GitVersion. GitVersion is a tool which solves semantic versioning of a git repository in its own way. With GitVersion, the version of any git repository is a pure function of its state, derived by tags, branches and commit messages.

GitVersion is built on .NET Framework (not .NET Core). Running it on a modern CI environment is possible, as a Docker image is available. For example, to see the semantic version of a repo you can run:

docker run --rm \
    -v $(pwd):/repo \
    gittools/gitversion /showvariable SemVer

The only problem is that the official image is a bit large, weighing in at 493MB.

I’ve managed to slim that down significantly at 85MB, by installing only the necessary mono libraries (with some trial and error).

This makes it a bit easier to use this tool. However, porting it to .NET Core might be a better solution overall.