我正在使用TeamCity运行一个bash脚本,该脚本利用SBT Native Packager将图像发布到Docker。 bash脚本的sbt部分看起来像这样:
sbt -DdockerRepository=$repo -DpackageName=$packageName -D myproject/docker:publish
我想将TeamCity内部版本号作为版本号传递给我的包。今天我在build.sbt:
的设置中手动指定版本号settings(
version := "0.20",
....,
dockerBaseImage := "example.com:5000/linux/java8:latest",
dockerRepository in Docker := Some("example.com/myoldrepo"),
dockerUpdateLatest := true'
)
我希望能够这样做:
activator -Dversion=0.21 -DpackageName=myproject -D myproject/docker:publish
但这似乎不起作用。然而,就像我上面那样重写dockerRepository是有效的。
如何从命令行/ TeamCity将所需的版本号传递到SBT?
答案 0 :(得分:8)
您可以在发布前设置版本:
sbt 'set version := "1.0"' docker:publish
答案 1 :(得分:2)
尝试这样的事情:
val myVersion = util.Properties.propOrNone("version").getOrElse("0.20")
val myDockerBaseImage = util.Properties.propOrNone("dockerBaseImage").
getOrElse("example.com:5000/linux/java8:latest")
lazy val myProject = Project("myProject",file("path")).settings(
version := myVersion,
dockerBaseImage := myDockerBaseImage,
....,
dockerRepository in Docker := Some("example.com/myoldrepo"),
dockerUpdateLatest := true
)
然后调用它(取决于你的sbt安装):
SBT_OPTS="-Dversion=0.21" sbt
sbt -Dversion=0.21
activator -Dversion=0.21