@@ -55,6 +55,7 @@ object DockerSpotifyClientPlugin extends AutoPlugin {
5555 def clientSettings =
5656 Seq (
5757 publishLocal := publishLocalDocker.value,
58+ publish := publishDocker.value,
5859 dockerVersion := dockerServerVersion.value,
5960 dockerApiVersion := dockerServerApiVersion.value
6061 )
@@ -71,6 +72,15 @@ object DockerSpotifyClientPlugin extends AutoPlugin {
7172 docker.packageDocker(primaryAlias, aliases, dockerDirectory, log)
7273 }
7374
75+ def publishDocker : Def .Initialize [Task [Unit ]] = Def .task {
76+ val _ = publishLocal.value
77+ val aliases = dockerAliases.value
78+ val log = streams.value.log
79+
80+ val docker = new DockerClientTask ()
81+ docker.publishDocker(aliases, log)
82+ }
83+
7484 def dockerServerVersion : Def .Initialize [Task [Option [DockerVersion ]]] = Def .task {
7585 val docker = new DockerClientTask ()
7686 docker.dockerServerVersion()
@@ -104,19 +114,23 @@ private class DockerClientTask {
104114
105115 log.info(s " PublishLocal using Docker API ${docker.version().apiVersion()}" )
106116
107- docker.build(Paths .get(dockerDirectory), primaryAlias.toString, new ProgressHandler {
108- override def progress (message : ProgressMessage ): Unit =
109- Option (message.error()) match {
110- case Some (error) if error.nonEmpty => log.error(message.error())
111- case _ => Option (message.stream()) foreach (v => log.info(v))
112- }
113- }, BuildParam .forceRm())
117+ docker.build(Paths .get(dockerDirectory), primaryAlias.toString, progressHandler(log), BuildParam .forceRm())
114118
115119 aliases.foreach { tag =>
116120 docker.tag(primaryAlias.toString, tag.toString, true )
117121 }
118122 }
119123
124+ def publishDocker (aliases : Seq [DockerAlias ], log : Logger ): Unit = {
125+ val docker : DockerClient = DefaultDockerClient .fromEnv().build()
126+
127+ log.info(s " Publish using Docker API ${docker.version().apiVersion()}" )
128+
129+ aliases.foreach { tag =>
130+ docker.push(tag.toString, progressHandler(log))
131+ }
132+ }
133+
120134 def dockerServerVersion (): Option [DockerVersion ] = {
121135 val docker : DockerClient = DefaultDockerClient .fromEnv().build()
122136 DockerVersion .parse(docker.version().version())
@@ -126,4 +140,12 @@ private class DockerClientTask {
126140 val docker : DockerClient = DefaultDockerClient .fromEnv().build()
127141 DockerApiVersion .parse(docker.version().apiVersion())
128142 }
143+
144+ private def progressHandler (log : Logger ) = new ProgressHandler {
145+ override def progress (message : ProgressMessage ): Unit =
146+ Option (message.error()) match {
147+ case Some (error) if error.nonEmpty => log.error(message.error())
148+ case _ => Option (message.stream()) foreach (v => log.info(v))
149+ }
150+ }
129151}
0 commit comments