I am using https://github.com/sbt/sbt-git and https://sbt-native-packager.readthedocs.io/en/stable/index.html and would like to assign the value of git.gitTagToVersionNumber
to my docker container.
I tried:
git.useGitDescribe := true
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitTagToVersionNumber.value)
it does not work, because the type of the last argument of DockerAlias
does not match.
How to get the value git.gitTagToVersionNumber
?
I also tried:
git.useGitDescribe := true
git.formattedShaVersion := git.gitTagToVersionNumber.value("tag")
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)
But it does not supply the desired value. I would like to tag my docker container for example with:
v0.2.0-2-g8d5cd83
This is an example of using GitTagToVersionNumber
:
git.useGitDescribe := true
git.gitDescribePatterns := Seq("v*.*")
git.gitTagToVersionNumber := { tag :String =>
val branchTag = if (git.gitCurrentBranch.value == "master") "" else "-" + git.gitCurrentBranch.value
val uncommit = if (git.gitUncommittedChanges.value) "-U" else ""
tag match {
case v if v.matches("v\\d+.\\d+") => Some(s"$v.0${branchTag}${uncommit}".drop(1))
case v if v.matches("v\\d+.\\d+-.*") => Some(s"${v.replaceFirst("-",".")}${branchTag}${uncommit}".drop(1))
case _ => None
}}
Don't forget you need to create a tag like v1.0 (git tag v1.0
on your current branch) to see the above code work, since it is reading that from git. If you're testing this remotely don't forget to do git push --tags
.
The example above provides:
-U
if the repository has modifications and therefore the code is not necessarily recreatable.This is a complete working example but maybe you haven't enabled the GitVersioning
plugin in the project part of build.sbt`.