将模块版本作为命令行参数发送到 SBT
Send module version as command line argument to SBT
我正在使用 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 是有效的。
如何通过命令 line/TeamCity 将我想要的版本号传递到 SBT?
尝试这样的事情:
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
您可以在发布前设置版本:
sbt 'set version := "1.0"' docker:publish
我正在使用 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 是有效的。
如何通过命令 line/TeamCity 将我想要的版本号传递到 SBT?
尝试这样的事情:
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
您可以在发布前设置版本:
sbt 'set version := "1.0"' docker:publish