【问题标题】:Execute shell script in SBT task through SSH通过 SSH 在 SBT 任务中执行 shell 脚本
【发布时间】:2013-12-10 03:18:39
【问题描述】:

找不到这方面的任何信息,这可能吗?我只需要在发布任务后执行像systemctl restart project 这样的运行小命令。

【问题讨论】:

    标签: ssh sbt


    【解决方案1】:

    我在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")
      }
    }
    

    【讨论】:

      【解决方案2】:

      好的,我找到了一个小库 - scala-ssh,要使其在 .scala 构建定义中可用,我们需要将此依赖项添加到 project/build.sbt 文件中,以便我们可以定义此类任务:

      val restart = taskKey[Unit]("restart")
      
      restart := {
        SSH(host, config) { client =>
          client.exec("systemctl restart project")
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-08-31
        • 2018-10-06
        • 1970-01-01
        • 2012-07-25
        • 2014-04-02
        • 2014-10-06
        • 2020-05-31
        • 1970-01-01
        相关资源
        最近更新 更多