diff options
author | Jakob Odersky <jakob@odersky.com> | 2017-04-09 16:55:41 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2017-04-09 16:55:47 -0700 |
commit | 2e67fc2ca823e8dc3616ce4a7305175bef58ff9b (patch) | |
tree | 1d76a32cf63dcf3e280f3a4e59a575f599b5449d | |
parent | 82cfb0ef1ab41ecc09ed0ccaf56704e14b654177 (diff) | |
download | crashbox-ci-2e67fc2ca823e8dc3616ce4a7305175bef58ff9b.tar.gz crashbox-ci-2e67fc2ca823e8dc3616ce4a7305175bef58ff9b.tar.bz2 crashbox-ci-2e67fc2ca823e8dc3616ce4a7305175bef58ff9b.zip |
Add generic execution id
5 files changed, 23 insertions, 23 deletions
diff --git a/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala b/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala index a6269e8..77998cd 100644 --- a/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala +++ b/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala @@ -13,16 +13,10 @@ import scala.concurrent.Future import scala.util.{ Failure, Success } -case class BuildId(id: String) extends AnyVal - -case class TaskId(buildId: String, taskIdx: Int) { - override def toString = s"$buildId#$taskIdx" -} - -class BuildSource[E <: Environment]( +class BuildSource[Env <: Environment, Id <: ExecutionId]( taskId: TaskId, - taskDef: TaskDef[E], - executor: Executor[E], + taskDef: TaskDef[Env], + executor: Executor[Env, Id], mkdir: => File, mkout: => OutputStream // TODO refactor this into a two-output stage ) extends GraphStage[SourceShape[Builder.BuildState]] { @@ -35,7 +29,7 @@ class BuildSource[E <: Environment]( def createLogic(attributes: Attributes) = new GraphStageLogic(shape) with StageLogging { implicit def ec = materializer.executionContext - lazy val instance: Future[ExecutionId] = executor.start( + lazy val instance: Future[Id] = executor.start( taskDef.environment, taskDef.script, mkdir, diff --git a/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala b/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala index 715ca65..25a7f2e 100644 --- a/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala +++ b/crashboxd/src/main/scala/io/crashbox/ci/DockerExecutor.scala @@ -19,11 +19,9 @@ import com.spotify.docker.client.exceptions.ContainerNotFoundException import com.spotify.docker.client.messages.{ContainerConfig, HostConfig} import com.spotify.docker.client.messages.HostConfig.Bind -case class ExecutionId(id: String) extends AnyVal object DockerExecutor { - def containerUser = "crashbox" def containerWorkDirectory = "/home/crashbox" def containerKillTimeout = 5.seconds @@ -31,7 +29,7 @@ object DockerExecutor { } class DockerExecutor(uri: String = "unix:///run/docker.sock")( - implicit system: ActorSystem) extends Executor[DockerEnvironment] { + implicit system: ActorSystem) extends Executor[DockerEnvironment, DockerExecutionId] { import DockerExecutor._ import system.log @@ -50,7 +48,7 @@ class DockerExecutor(uri: String = "unix:///run/docker.sock")( script: String, buildDirectory: File, out: OutputStream - ): Future[ExecutionId] = + ): Future[DockerExecutionId] = Future { val volume = Bind .builder() @@ -91,10 +89,10 @@ class DockerExecutor(uri: String = "unix:///run/docker.sock")( } } } - ExecutionId(container) + DockerExecutionId(container) }(system.dispatcher) - def result(id: ExecutionId): Future[Int] = + def result(id: DockerExecutionId): Future[Int] = Future { log.debug(s"Waiting for container $id to exit") val res: Int = dockerClient.waitContainer(id.id).statusCode() @@ -102,7 +100,7 @@ class DockerExecutor(uri: String = "unix:///run/docker.sock")( res }(system.dispatcher) - def stop(id: ExecutionId): Unit = { + def stop(id: DockerExecutionId): Unit = { try { log.debug(s"Stopping container $id") dockerClient.stopContainer(id.id, diff --git a/crashboxd/src/main/scala/io/crashbox/ci/ExecutionId.scala b/crashboxd/src/main/scala/io/crashbox/ci/ExecutionId.scala new file mode 100644 index 0000000..4e82742 --- /dev/null +++ b/crashboxd/src/main/scala/io/crashbox/ci/ExecutionId.scala @@ -0,0 +1,4 @@ +package io.crashbox.ci + +trait ExecutionId +case class DockerExecutionId(id: String) extends ExecutionId diff --git a/crashboxd/src/main/scala/io/crashbox/ci/Executor.scala b/crashboxd/src/main/scala/io/crashbox/ci/Executor.scala index 06befee..92a0fc7 100644 --- a/crashboxd/src/main/scala/io/crashbox/ci/Executor.scala +++ b/crashboxd/src/main/scala/io/crashbox/ci/Executor.scala @@ -3,18 +3,17 @@ package io.crashbox.ci import java.io.{ File, OutputStream } import scala.concurrent.Future - -trait Executor[E <: Environment] { +trait Executor[Env <: Environment, Id <: ExecutionId] { def start( - environment: E, + environment: Env, script: String, buildDirectory: File, out: OutputStream - ): Future[ExecutionId] + ): Future[Id] - def result(id: ExecutionId): Future[Int] + def result(id: Id): Future[Int] - def stop(id: ExecutionId): Unit + def stop(id: Id): Unit } diff --git a/crashboxd/src/main/scala/io/crashbox/ci/TaskId.scala b/crashboxd/src/main/scala/io/crashbox/ci/TaskId.scala new file mode 100644 index 0000000..292ba29 --- /dev/null +++ b/crashboxd/src/main/scala/io/crashbox/ci/TaskId.scala @@ -0,0 +1,5 @@ +package io.crashbox.ci + +case class TaskId(buildId: String, taskIdx: Int) { + override def toString = s"$buildId#$taskIdx" +} |