使用Jenkins构建Android应用程序

时间:2016-07-11 15:38:56

标签: android ubuntu jenkins gradle ssh

我已经按照以下步骤设置了Jenkins作业来构建我的android项目:

  1. SSH连接到ubuntu计算机。我用sdk,java,gradle等设置它。
  2. 克隆我的源代码
  3. 使用“./gradlew assembleRelease”
  4. 构建apk
  5. 部署或通过电子邮件发送给我(apk构建后的一步,可自定义)
  6. 但是,在构建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(DaemonC‌​lient.java:222)
    

    似乎非常奇怪,因为当我通过直接登录远程计算机构建时,此错误永远不会出现。只有在使用jenkins触发构建时才会发生。似乎有些东西正在杀死gradle守护进程,因为jvm设置看起来很好。也许ssh支队仍在发生,但在这个过程中的不同点比我之前看到的那个。

1 个答案:

答案 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分钟,它应该可以正常工作。