2016-03-31 2 views
1

J'utilise TeamCity pour exécuter un script bash qui utilise SBT Native Packager pour publier une image sur Docker. La partie SBT du script bash ressemble à quelque chose comme ceci:Envoyer la version du module en tant qu'argument de ligne de commande à SBT

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

Je veux transmettre le numéro de version de TeamCity comme numéro de version à mon paquet. Aujourd'hui, je précise le numéro de version manuellement dans les paramètres de build.sbt:

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

Je veux être en mesure de faire comme ceci:

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

mais cela ne semble pas fonctionner. Cependant, surcharger le dockerRepository comme je le fais ci-dessus fonctionne.

Comment puis-je transmettre le numéro de version souhaité dans SBT à partir de la ligne de commande/TeamCity?

Répondre

4

Vous pouvez définir version avant publication:

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

Merci. Qu'est-ce qui est considéré comme plus correct de cette approche et Andrzejs répond ci-dessus? –

+0

La principale différence est que mon approche ne nécessite pas de changer de build. Les deux sont corrects à mon humble avis. – kardapoltsev

2

Essayez quelque chose comme ceci:

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 
) 

Et puis l'appeler (en fonction de votre installation de SBT):

SBT_OPTS="-Dversion=0.21" sbt

sbt -Dversion=0.21

activator -Dversion=0.21