【问题标题】:Any helps to Build Android App with Jenkins任何有助于使用 Jenkins 构建 Android 应用程序
【发布时间】:2016-07-11 15:38:55
【问题描述】:

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

  1. 通过 SSH 连接到 ubuntu 机器。我使用 SDK、java、gradle 等进行设置。
  2. 克隆我的源代码
  3. 使用“./gradlew assembleRelease”构建 apk
  4. 部署它或通过电子邮件发送给我(apk 构建后的步骤,可自定义)

但是,在 android 构建过程的某些步骤中,SSH 隧道会关闭到我的远程计算机,例如在构建以下模块时: :app: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 触发构建时发生。因为 JVM 设置看起来不错,所以似乎有些东西正在杀死 Gradle 守护进程。也许 ssh 分离仍在发生,但与我之前看到的不同点。

【问题讨论】:

  • 目前有什么进展吗?

标签: android ubuntu jenkins gradle ssh


【解决方案1】:

尝试手动打开与您的 ubuntu 从站的 ssh 连接,然后尝试通过配置保持活动参数来增加 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 构建(结帐 + 安装东西 + gradle 构建)需要不到 10 分钟,它应该可以正常工作。

【讨论】:

  • 我假设您的意思是这些应该进入 /etc/ssh/sshd_config 然后重新启动 ssh 服务。做过某事。还是一样的问题。 :app:transformClassesWithDexForDevReleaseSSH: EXEC: 146,514 ms 后完成 SSH: 断开配置 [server_hostname] ... SSH: 传输 0 个文件完成: SUCCESS
  • @DipeshMittal 你能添加 --stacktrace 标志并用它的内容更新你的问题吗?
猜你喜欢
  • 2014-04-16
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多