2016-03-31 14 views
1

私はTeamCityを使用してSBTネイティブパッケージャを利用して画像をDockerに公開するbashスクリプトを実行しています。SBTへのコマンドライン引数としてモジュールバージョンを送信

sbt -DdockerRepository=$repo -DpackageName=$packageName -D myproject/docker:publish 

私は私のパッケージにバージョン番号としてチームシティーのビルド番号に渡したい:bashスクリプトのSBT部分は次のようになります。今日はbuild.sbtの設定に手動でバージョン番号を指定します。

settings(
    version := "0.20", 
    ...., 
    dockerBaseImage := "example.com:5000/linux/java8:latest", 
    dockerRepository in Docker := Some("example.com/myoldrepo"), 
    dockerUpdateLatest := true' 
) 

私はこのようにそれを行うことができるようにしたい:

activator -Dversion=0.21 -DpackageName=myproject -D myproject/docker:publish 

が、これは動作するようには思えません。しかし、私が上記のようにドッキングステーションを上書きすることは働いています。

コマンドライン/ TeamCityから希望のバージョン番号をSBTに渡すにはどうすればよいですか?

答えて

4

をバージョン公開前:

sbt 'set version := "1.0"' docker:publish 
+0

ありがとうございます。上記のアプローチとAndrzejsの答えが正しいと思われるものは何ですか? –

+0

主な違いは、私のアプローチではビルドを変更する必要がないということです。どちらも正しいIMHOです。 – kardapoltsev

2

このような何か試してみてください。そして、

val myVersion = util.Properties.propOrNone("version").getOrElse("0.20") 

val myDockerBaseImage = util.Properties.propOrNone("dockerBaseImage"). 
        getOrElse("example.com:5000/linux/java8:latest") 

lazy val myProject = Project("myProject",file("path")).settings(
    version := myVersion, 
    dockerBaseImage := myDockerBaseImage, 
    ...., 
    dockerRepository in Docker := Some("example.com/myoldrepo"), 
    dockerUpdateLatest := true 
) 

そして、それを呼び出して(あなたのSBTのインストールによって異なります):あなたが設定することができ

SBT_OPTS="-Dversion=0.21" sbt

sbt -Dversion=0.21

activator -Dversion=0.21