如何通过sbt-release在发布过程中推送/构建docker镜像

时间:2016-05-24 15:42:10

标签: scala docker sbt sbt-release sbt-docker

我是斯卡拉的新手。

我使用sbt-release来控制发布过程,并使用sbt-docker来构建/发布docker镜像。

我可以通过Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"发布特定版本,并通过sbt release或`sbt dockerBuildAndPush'

构建/发布泊坞窗图片

如果我想发布特定版本,我需要

  1. 执行sbt docker
  2. 记住发布版本并使用发布版本修改docker image标记
  3. 执行sbt release
  4. 但这太乏味了......

    我想在发布过程中添加构建/发布docker镜像。

    例如:

    我在sbt dockerBuildAndPush

    中定义了我的发布流程
    build.sbt

    但我不知道如何实现publishDocker函数。

    感谢您的帮助〜

3 个答案:

答案 0 :(得分:1)

@ed感谢您的建议,我自己解决了这个问题:>

这是我的亲戚:https://gist.github.com/pandaforme/e378dc3f1f32aa252b14e40937491e9c

我只是执行sbt release,它会自动编译,生成发布版本,构建和推送泊坞窗图像等。

答案 1 :(得分:0)

在发布过程中发布 Docker 镜像的最简单方法是:

releaseProcess := {
  import ReleaseTransformations._
  Seq[ReleaseStep](
    // ... prev steps
    ReleaseStep(releaseStepTask(Docker / publish)),
    // ... next steps
  )
}

Credits

答案 2 :(得分:-1)

我不熟悉sbt-docker,但您可以从version参数中获取st: State

val publishDocker = ReleaseStep(action = st => {
  // 1. get version from sbt
  // (it was set by sbt-release in setReleaseVersion)
  val extracted = Project.extract(st)
  val version:String = extracted.get(sbt.Keys.version)

})