gitscalasbt-native-packagersbt-git

How to get git.gitTagToVersionNumber value?


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

Solution

  • 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:

    This is a complete working example but maybe you haven't enabled the GitVersioning plugin in the project part of build.sbt`.