2016-05-24 33 views
1

我是scala的新手。如何在發佈過程中通過sbt-release推送/構建Docker鏡像

我使用sbt-release來控制發佈過程,並使用sbt-docker來構建/發佈泊塢窗鏡像。

我可以通過sbt release釋放的特定版本和構建/通過sbt docker或`SBT dockerBuildAndPush」

如果我要發佈一個特定的版本,我需要

  1. 執行sbt release
  2. 發佈碼頭工人形象
  3. 記住發佈版本並修改發佈版本的docker image標籤
  4. 執行sbt dockerBuildAndPush

但它是如此的乏味......

我想補充的構建/發佈泊塢窗圖像到釋放的過程。

例如:

我定義我的釋放過程中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功能。

感謝您的幫助〜

回答

-1

我不熟悉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) 

}) 
相關問題