使用 Jenkins 通过 SSH 发送文件或执行命令时脚本不退出
Script not exiting when using Jenkins Send Files or Execute Commands Over SSH
我对设置 jenkins 还很陌生,所以请多多包涵。我正在尝试远程执行一个 shell 脚本,该脚本在 Jenkins 完成构建并将文件部署到该服务器后停止并启动我的独立 Jetty 部署。
http://imgur.com/PXGHqtl
(Post 在 Jenkins 上构建设置的屏幕截图因为我还不是 10 代表...)
所以我遇到的问题是,一旦构建到达这个阶段并且 Send Files over SSH 插件开始执行 jetty.sh 启动脚本,我收到超时错误,因为 sh 脚本似乎没有't return 任何完成确认(错误:发布时出现异常,异常消息 [执行超时或在 120,003 毫秒后被中断])。这会导致构建失败,尽管码头服务已正确启动。
我尝试通过启用 "Exec in pty" 来调整高级设置,但这会导致启动的码头服务在该步骤完成后立即再次关闭。
有人对我还能尝试什么有什么建议吗?我的做法是正确的还是完全错误的?
为什么我收到超时错误
通过 SSH 发送文件插件的高级部分中有一个内置超时。默认情况下,它设置为在 SSH 连接不活动时超时 120 秒。在这种情况下,我 运行 通过 SSH post 发送文件任务 "Exec in Pty" 选项 已禁用 。选中此选项后,插件将通过虚拟 SSH 终端会话连接到部署服务器,之后它不会自行退出会话,因此它只是等待超时。
为什么jetty服务启动后立即关闭
使用 "Exec in Pty" 选项 enabled,使用正确的 SSH 终端会话连接到我的部署服务器。这将任何输出和进程与实际的终端会话联系起来。当 Send Files over SSH 插件完成 jetty 启动脚本执行时,它会自行退出,但这样做会终止脚本启动的任何进程。
解决方案
经过大量挖掘后,我找到了一个使用命令启动脚本的解决方案:'nohup ./jetty.sh start > /dev/null 2>&1 &' 代替我常用的 ./jetty.sh 启动命令。但这有一个缺点。输出没有重定向到终端会话,所以我不知道我的码头服务是否正常启动。但就目前而言,我对目前的解决方案很满意,因为它只会部署到我的开发环境中。
来源
Terminating SSH session executed by bash script
Jenkins Text-finder unable to success my Build
Jetty server stops running after closing terminal window
我对设置 jenkins 还很陌生,所以请多多包涵。我正在尝试远程执行一个 shell 脚本,该脚本在 Jenkins 完成构建并将文件部署到该服务器后停止并启动我的独立 Jetty 部署。
http://imgur.com/PXGHqtl (Post 在 Jenkins 上构建设置的屏幕截图因为我还不是 10 代表...)
所以我遇到的问题是,一旦构建到达这个阶段并且 Send Files over SSH 插件开始执行 jetty.sh 启动脚本,我收到超时错误,因为 sh 脚本似乎没有't return 任何完成确认(错误:发布时出现异常,异常消息 [执行超时或在 120,003 毫秒后被中断])。这会导致构建失败,尽管码头服务已正确启动。
我尝试通过启用 "Exec in pty" 来调整高级设置,但这会导致启动的码头服务在该步骤完成后立即再次关闭。
有人对我还能尝试什么有什么建议吗?我的做法是正确的还是完全错误的?
为什么我收到超时错误
通过 SSH 发送文件插件的高级部分中有一个内置超时。默认情况下,它设置为在 SSH 连接不活动时超时 120 秒。在这种情况下,我 运行 通过 SSH post 发送文件任务 "Exec in Pty" 选项 已禁用 。选中此选项后,插件将通过虚拟 SSH 终端会话连接到部署服务器,之后它不会自行退出会话,因此它只是等待超时。
为什么jetty服务启动后立即关闭
使用 "Exec in Pty" 选项 enabled,使用正确的 SSH 终端会话连接到我的部署服务器。这将任何输出和进程与实际的终端会话联系起来。当 Send Files over SSH 插件完成 jetty 启动脚本执行时,它会自行退出,但这样做会终止脚本启动的任何进程。
解决方案
经过大量挖掘后,我找到了一个使用命令启动脚本的解决方案:'nohup ./jetty.sh start > /dev/null 2>&1 &' 代替我常用的 ./jetty.sh 启动命令。但这有一个缺点。输出没有重定向到终端会话,所以我不知道我的码头服务是否正常启动。但就目前而言,我对目前的解决方案很满意,因为它只会部署到我的开发环境中。
来源
Terminating SSH session executed by bash script
Jenkins Text-finder unable to success my Build
Jetty server stops running after closing terminal window