我已经按照以下步骤设置了Jenkins作业来构建我的android项目:
但是,在构建android过程的某些步骤中,SSH隧道会关闭我的远程计算机,就像以下模块构建时一样: 的:应用程序:transformClassesWithDexForDevRelease
我正在寻找一种方法来保持SSH隧道开启,以便构建命令不会退出。我尝试使用 nohup 运行命令但仍然执行相同操作。
非常感谢任何帮助或建议。
修改
通过添加,我可以通过改变小型登录机器来传递ssh问题 主办* ServerAliveInterval 600
然而,在此之后我添加了--stacktrace标志,这会给我以下响应:
org.gradle.launcher.daemon.client.DaemonDisappearedException: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) at
org.gradle.launcher.daemon.client.DaemonClient.handleDaemonDisappearance(DaemonClient.java:222)
似乎非常奇怪,因为当我通过直接登录远程计算机构建时,此错误永远不会出现。只有在使用jenkins触发构建时才会发生。似乎有些东西正在杀死gradle守护进程,因为jvm设置看起来很好。也许ssh支队仍在发生,但在这个过程中的不同点比我之前看到的那个。
答案 0 :(得分:0)
尝试手动打开与ubuntu slave的ssh连接,然后尝试通过配置keep alive参数来增加ssh服务器配置(/etc/ssh/ssh_config
)的连接超时,如下例所示:
# activates the keep alive verification (default is Yes)
# you could just set this to No but it would risk keeping ghost ssh sessions
TCPKeepAlive Yes
# sets the keep alive interval (in seconds) - this will send one keep alive per minute
ClientAliveInterval 60
# Sets the number of client alive messages which may be sent without sshd receiving any messages back
ClientAliveCountMax 10
这意味着sshd将每分钟发送一个客户端,并在关闭ssh会话之前等待10分钟以获得客户端响应。
假设你的整个jenkins构建(checkout +安装东西+ gradle构建)需要不到10分钟,它应该可以正常工作。