gpt4 book ai didi

android - 任何有助于使用 Jenkins 构建 Android 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:51 53 4
gpt4 key购买 nike

我已经按照以下步骤设置了一个 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 触发构建时发生。似乎有什么东西正在杀死 Gradle 守护进程,因为 JVM 设置看起来不错。也许 ssh 分离仍在发生,但与我之前看到的不同。

最佳答案

尝试手动打开到您的 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 session 之前等待 10 分钟以等待客户端响应。

假设您的整个 jenkins 构建(结帐 + 安装东西 + gradle 构建)花费不到 10 分钟,它应该可以正常工作。

关于android - 任何有助于使用 Jenkins 构建 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38310975/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com