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

我是scala的新手。

我用sbt-release来控制发布过程和sbt-docker来构build/发布一个docker镜像。

我可以通过sbt release发布特定版本,并通过sbt docker或者sbt dockerBuildAndPush来构build/发布一个docker镜像。

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

  1. 执行sbt release
  2. 请记住发行版本并修改发行版本的docker image标签
  3. 执行sbt dockerBuildAndPush

但是太单调乏味了

我想将构build/发布docker镜像添加到发布过程中。

例如:

我在build.sbt定义了我的发布过程

 val publishDocker = ReleaseStep(action = st => { // 1. get release version from sbt-release // 2. add release version to docker image tag // 3. push docker image to aws ecr }) releaseProcess := Seq[ReleaseStep]( checkSnapshotDependencies, inquireVersions, runTest, setReleaseVersion, commitReleaseVersion, tagRelease, publishDocker, setNextVersion, commitNextVersion, pushChanges ) 

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

感谢您的帮助〜

谢谢你的build议,我自己解决了:>

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

我只是执行sbt release ,它会自动编译,生成发行版本,build立和推docker图像等。

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

 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) })