我正在使用https://github.com/sbt/sbt-git和https://sbt-native-packager.readthedocs.io/en/stable/index.html,并想将git.gitTagToVersionNumber
的值分配给我的docker容器。
我尝试过:
git.useGitDescribe := true
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitTagToVersionNumber.value)
它不起作用,因为DockerAlias
的最后一个参数的类型不匹配。
如何获取值git.gitTagToVersionNumber
?
我也尝试过:
git.useGitDescribe:= true
git.formattedShaVersion := git.gitTagToVersionNumber.value("tag")
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)
但是它没有提供所需的值。我想用例如
标记我的docker容器v0.2.0-2-g8d5cd83
答案 0 :(得分:2)
这是使用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
}}
别忘了您需要创建一个像v1.0这样的标签(当前分支上的git tag v1.0
)才能看到上面的代码,因为它是从git读取的。如果您要进行远程测试,请不要忘记做git push --tags
。
上面的示例提供了:
这是一个完整的工作示例:https://github.com/UKHomeOffice/rtp-email-lib/blob/68a2d6628d29b8b012a13b498320e11c2ac2aaa1/build.sbt,但也许您尚未在build.sbt的项目部分中启用GitVersioning插件。