gpt4 book ai didi

java - 使用 Jenkins 通过 SSH 发送文件或执行命令时脚本不退出

转载 作者:行者123 更新时间:2023-11-29 03:09:13 28 4
gpt4 key购买 nike

我对设置 jenkins 还很陌生,所以请多多包涵。我正在尝试远程执行一个 shell 脚本,该脚本在 Jenkins 完成构建并将文件部署到该服务器后停止和启动我的独立 Jetty 部署。

http://imgur.com/PXGHqtl(Jenkins 上的 Post Build 设置的屏幕截图,因为我还不是 10 代表...)

所以我遇到的问题是,一旦构建到达这个阶段并且 Send Files over SSH 插件开始执行 jetty.sh 启动脚本,我收到超时错误,因为 sh 脚本似乎没有返回任何完成确认(错误:发布时出现异常,异常消息 [Exec 超时或在 120,003 毫秒后被中断])。这会导致构建失败,尽管 jetty 服务已正确启动。

我已经尝试通过启用“Exec in pty”来使用高级设置,但这会导致启动的 jetty 服务在该步骤完成后立即再次关闭。

有人对我还可以尝试什么提出建议吗?我的方法是正确的还是完全错误的?

最佳答案

为什么我会收到超时错误
通过 SSH 发送文件插件的高级部分中有一个内置超时。默认情况下,它设置为在 SSH 连接不活动时超时 120 秒。在这种情况下,我正在使用“Exec in Pty”选项禁用运行通过 SSH 发送文件后任务。选中此选项后,插件将通过虚拟 SSH 终端 session 连接到部署服务器,之后它不会自行退出 session ,因此它只是等待超时。

为什么jetty服务启动后立即关闭
使用“Exec in Pty”选项启用,使用正确的 SSH 终端 session 连接到我的部署服务器。这将任何输出和进程与实际的终端 session 联系起来。当 Send Files over SSH 插件完成 Jetty 启动脚本执行时,它会自行退出,但这样做会终止脚本启动的任何进程。

解决方案
经过大量挖掘后,我找到了一个解决方案来使用命令启动我的脚本:'nohup ./jetty.sh start >/dev/null 2>&1 &' 代替我通常的 ./jetty.sh start 命令。但这有一个缺点。输出没有重定向到终端 session ,所以我不知道我的 jetty 服务是否正常启动。但就目前而言,我对目前的解决方案很满意,因为它只会部署到我的开发环境中。

来源
Terminating SSH session executed by bash script
Jenkins Text-finder unable to success my Build
Jetty server stops running after closing terminal window

关于java - 使用 Jenkins 通过 SSH 发送文件或执行命令时脚本不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364442/

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