【发布时间】:2015-04-28 09:12:58
【问题描述】:
我在从属节点有非常重要且长期的工作,而主节点没有工作。 在这种情况下,我需要重新配置和更新插件。
(其实longs作业很多(耗时超过一小时,但这些作业必须在5分钟内重新启动。)
我可以在不停止从节点作业的情况下重启 Jenkins 主节点吗?
【问题讨论】:
标签: jenkins
我在从属节点有非常重要且长期的工作,而主节点没有工作。 在这种情况下,我需要重新配置和更新插件。
(其实longs作业很多(耗时超过一小时,但这些作业必须在5分钟内重新启动。)
我可以在不停止从节点作业的情况下重启 Jenkins 主节点吗?
【问题讨论】:
标签: jenkins
看起来这个问题类似于How reboot Jenkins with running build queue?,并且可以考虑安全重启插件
【讨论】:
Jenkins 架构不允许这样做,在 Jenkins 中添加对此的支持几乎是不可能的。
如果这对您很重要,您应该寻找其他允许这样做的 CI 解决方案。
我知道它可以做到这一点的唯一一个是GitLab CI。如果我记得很清楚,一旦将作业分配给节点/从站,它将在其上运行,您可以重新启动主站,而不会影响从站或作业。
值得一提的是,GitLab CI 与 Travis CI 类似,可能只支持 Jenkins 可以做的 10%,但这并不意味着您一定需要更多。
【讨论】:
我刚刚做了 OP 询问的场景,结果是所有后续作业都在 sh 步骤上挂起 5 分钟,然后出现此错误:
17:36:31 process apparently never started in /var/lib/jenkins/workspace/TesiraFirmwareNG_develop-tmp/durable-6a718028
17:36:31 (running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
有人知道这是什么吗? Durable Task 插件的目的似乎是让 Jenkins 能够监控 Jenkins 之外的长时间运行的任务。读到这里,我相信它是 Jenkins 如何管理奴隶及其工作的关键部分。当我重启 Jenkins 主服务器时,重启运行下游作业的 Jenkins 从服务器可能会解决持久任务问题。
但没有运气 - 重新启动主机和从机后,我仍然遇到上面相同的“进程显然从未启动”错误。有人知道这个问题的原因,或者知道解决方案吗?
更新:我们的问题原来是 Jenkins 全局属性中的一个空环境变量,与在其主服务器重新启动时运行的从属作业无关。 This issue 是我们的原因,只有在启用 LAUNCH_DIAGNOSTICS java arg 后才明显,这导致更多输出显示先前无提示的错误(传递给 docker 调用的空环境变量)导致我们找到根本原因。
【讨论】: