【发布时间】:2013-12-10 03:18:39
【问题描述】:
找不到这方面的任何信息,这可能吗?我只需要在发布任务后执行像systemctl restart project 这样的运行小命令。
【问题讨论】:
找不到这方面的任何信息,这可能吗?我只需要在发布任务后执行像systemctl restart project 这样的运行小命令。
【问题讨论】:
我在my tests 中执行此操作。但是,其中有一些奇怪的输出内容可以捕获故障。
基本要点是 sbt 提供了一个 process API,它最终成为了 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")
}
}
【讨论】:
好的,我找到了一个小库 - scala-ssh,要使其在 .scala 构建定义中可用,我们需要将此依赖项添加到 project/build.sbt 文件中,以便我们可以定义此类任务:
val restart = taskKey[Unit]("restart")
restart := {
SSH(host, config) { client =>
client.exec("systemctl restart project")
}
}
【讨论】: