找不到任何关于此的信息,这可能吗?我只需要在发布任务后执行像systemctl restart project
这样的小命令。
答案 0 :(得分:6)
我在my tests执行此操作。然而,那里有一些奇怪的输出东西来捕捉失败。
基本要点是sbt提供process API,其中eventualyl成为Scala核心库的一部分。
以下是一个例子:
val restartSystemService = taskKey[Unit]("restarts stuff")
restartSystemService := {
val logger = streams.value.log
Process("systemctrl restart project") ! logger match {
case 0 => // Success!
case n => sys.error(s"Could not restart the project, exit code: $n")
}
}
答案 1 :(得分:3)
好的,我找到了一个小型库 - scala-ssh,要使它在.scala
构建定义中可用,我们需要将此依赖项添加到project/build.sbt
文件中,以便我们可以定义此类任务:
val restart = taskKey[Unit]("restart")
restart := {
SSH(host, config) { client =>
client.exec("systemctl restart project")
}
}