从命令行参数化 SBT DockerPlugin

Parameterize SBT DockerPlugin from command line

我正在使用 SBT 构建 Scala 应用程序,我们正在使用 Docker插件进行实际构建。配置看起来像这样:

 .enablePlugins(PlayScala, PlayAkkaHttp2Support, DockerPlugin)
  .in(...)
  .settings(name := "...")
  .settings(version := VERSION)
  ...
  .settings(dockerUpdateLatest := true)

所以我 运行 sbt docker:publish 来自我们的 CI 服务器(在本例中为 CircleCI)。但这会构建一个版本并将其发布到我们的 Docker 存储库。事情是我们 运行 在 developmaster 上都这样做。 Develop 获得后缀 -SNAPSHOT 但两者都将其版本化 Docker 图像作为最新标签推送。

最后一件事是我不想要的,我想为大师做一个构建(例如 1.5.3 并将其推送到最新版本(因为这是我最新的稳定版本))但不是为了开发。所以我想将 .settings(dockerUpdateLatest := false) 设置为不自动更新最新但然后在我的 master 构建中将命令行上的某些内容配置为 trigger/change 该设置。

这是否可行,谁能告诉我如何查看或在哪里查看?

谢谢!

您可以使用 Java 系统 属性。

dockerUpdateLatest :=
  sys.props.getOrElse("myproject.dockerUpdateLatest", "false").toBoolean

然后你像这样启动sbt: sbt -J-Dmyproject.dockerUpdateLatest=true docker:publish

但我认为更优雅的解决方案是只检查您正在构建的版本是否是快照版本。

dockerUpdateLatest := ! isSnapshot.value