2

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

我可以通过或`sbt dockerBuildAndPush'发布特定版本sbt release并构建/发布docker镜像sbt docker

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

  1. 执行sbt release
  2. 记住发布版本并使用发布版本修改 docker 镜像标签
  3. 执行sbt dockerBuildAndPush

但这太乏味了...

我想将构建/发布 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 功能。

4

3 回答 3

1

@ed 谢谢你的建议,我自己解决了:>

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

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

于 2016-05-28T12:39:02.323 回答
0

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

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

学分

于 2021-04-12T18:57:25.307 回答
-2

我不熟悉,sbt-docker但您可以versionst: 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)

})
于 2016-05-25T22:47:35.863 回答