是否存在本机方式(通过GUI或通过命令行)安全重启Jenkins? IE:等待当前作业完成然后再下降,并跟踪Jenkins重新启动后开始排队的作业。
我知道有一个插件,但是要安装它,我需要重新启动Jenkins ...
#1 楼
如果您导航到$YOUR_JENKINS_URL/updateCenter/
,则应该看到以下页面: 这里您可以检查
Restart Jenkins when installation is complete and no jobs are running
,这应该是相当安全的。评论
我的理解是,仅在插件正在安装过程中才会发生重启...没有办法强迫不安装插件就进行重启,是吗?
– Alex
18年1月17日在16:36
@Alex我只是在我的实例上对其进行了测试,对我来说,无论安装插件如何,它似乎始终可以正常工作。根据stackoverflow.com/a/8077830,还应该有一个/ safeRestart和/ restart端点。
–eyalzek
18年1月17日在17:01
但是,这不是关于在作业运行时重新启动的问题吗?
–丹·科尼莱斯库(Dan Cornilescu)
18年1月17日在17:56
@DanCornilescu问题指出:IE:等待当前作业完成后再下降,并跟踪Jenkins重新启动后排队的作业。
–eyalzek
18年1月18日在17:09
我之所以问是因为这个问题还指出詹金斯在三天内没有工作,这意味着会有影响,因为一些工作将被延迟。但是,总比失去工作更好。
–丹·科尼莱斯库(Dan Cornilescu)
18年1月18日在17:47
#2 楼
访问https:// youjenkinsdomain / safeRestart会将其设置为等待作业停止然后重新启动的模式。评论
当我们的Jenkins服务器出现错误并在插件需要它时无法重新启动时,我需要使用此特定答案。
–kayleeFrye_onDeck
19年1月9日在2:30
#3 楼
您可以使用Jenkins Rest API([jenkins_url] / safeRestart)执行safeRestart命令,也可以通过Jenkins CLI执行命令。sudo /etc/init.d/jenkins safeRestart
运行CLI命令
通用语法如下(设计类似于svn / git之类的工具是
):
java -jar jenkins-cli .jar [-s JENKINS_URL]命令[选项...]
[参数...]
JENKINS_URL可以通过环境变量$ JENKINS_URL指定。当Jenkins在构建过程中派生一个进程时,会自动设置该环境变量
,这使您可以从内部使用
Jenkins CLI,而无需显式配置
URL。
注意:当运行safeRestart命令时,任何设置为在重启期间执行的作业都将排队,并在服务器恢复联机时执行。确保重启后不会引起任何冲突!
#4 楼
要手动重新启动Jenkins,可以使用以下任一命令(通过在浏览器中输入其URL):(jenkins_url)/safeRestart
-允许所有正在运行的作业完成。重新启动完成后,新作业将保留在队列中以运行。(jenkins_url)/restart
-强制重新启动而不等待构建完成。#5 楼
我认为这是许多人试图解决的实际问题。有时最好在安装插件后重新启动Jenkins。根据我的经验,我可以提供的建议之一是:限制对管理模块的访问,以便并非每个开发人员都可以安装插件。并提前通知他们
批量安装所有必需的插件并重新启动Jenkins
,通知开发人员Jenkins可以使用了。
我知道这需要手动进行,并且协调。但这到目前为止在我们的项目中效果很好,一提到就没什么害处。
#6 楼
在进行管道作业的情况下,访问“ https:// jenkins / safeRestart”不会等待“作业/构建”完成。jenkins再次出现后,似乎要等待步骤完成并执行jenkins重新启动并恢复pipline。
评论
我想这是对@Nakilon答案的评论?
– hagello
18年6月28日在14:08
#7 楼
Jenkins的设计不受重新启动的影响。根据我的经验,构建可能会由于重新启动而失败,但这种情况很少见。在我工作的地方,我们不得不定期重新启动Jenkins。我们有您能想象到的各种工作,有些很小,有些很大。我们只有一次看到没有使酱菜重新补水的构建失败。
之后,我们总是立即安全重启。
评论
从我的头顶猜测,但是禁用奴隶不是一种选择吗? (据我所知,它不会停止正在进行的作业,但会阻止启动队列中的其他作业)从理论上讲,通过正确配置的Jenkins实例运行Pipeline作业,您可以随时重新启动主节点或从节点。我的经验却相反。