需要按计划以编程方式重新启动Jenkins服务

时间:2014-01-17 18:20:45

标签: windows jenkins

我希望能够设置一个每晚重启Jenkins的预定作业(Windows7)。有没有办法设置一个运行的作业,以编程方式执行safeRestart,我可以将其放入我的Windows调度程序中?

5 个答案:

答案 0 :(得分:20)

如果上面的CLI方法不起作用(在我的情况下它失败了:hudson.security.AccessDeniedException2:anonymous缺少整体/读取权限)

您可以创建Groovy plugin构建步骤"执行系统Groovy脚本":

或新的Jenkins实例

import hudson.model.*;
Hudson.instance.doSafeRestart(null);

然后,您可以将此作业设置为按计划触发。 例如,要在午夜每天重启Jenkins,请设置"定期构建":import jenkins.model.* Jenkins.instance.doSafeRestart(null);

答案 1 :(得分:5)

此处发布此内容的其他人来自Google。您可以向Jenkins添加作业以使用CLI重新启动自身。添加一个带有shell步骤的作业来执行:

java -jar "$JENKINS_HOME/war/WEB-INF/jenkins-cli.jar" -s "$JENKINS_URL" safe-restart

答案 2 :(得分:1)

您可以在Jenkins CLI

中使用safe-restart命令

答案 3 :(得分:1)

对于启用了LDAP的Jenkins,直接调用safe-restart命令不起作用。 This JENKINS JIRA helped

先登录

java -jar jenkins-cli.jar -s http://localhost:8080 login --username "$JCLIUSER" --password "$JCLIPASSWD"

之后安全重启

java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart --username "$JCLIUSER" --password "$JCLIPASSWD"

答案 4 :(得分:0)

解决方案::使用Jenkins Resftul API重启您的jenkins服务,并创建一些crontab任务来每天执行-(在Linux / Unix / Mac版本上) ,与重启相关的詹金斯上的基本标志是:

--restart (force restart , terminating current session)
--safeRestart (restart after all builds and jobs are completed [Graceful restart])

示例: 任务将是:

curl -x POST -u <user>:<token> <jenkins-ip>/safeRestart

用于添加crontab

#Go to your scripts directory
cd ~/scripts 
# edit new script file
sudo vim restart-jenkins-task.sh 
# paste the task above ^ ...
# make the script executable
chmod +x restart-jenkins-task.sh 
# add crontab task
sudo crontab -e 
# paste the following: run the new script every night at 00:00 (12 am midnight)
0 0 * * * ~/scripts/restart-jenkins-task.sh 

付款注意: 管理全局维护任务的最佳实践是生成一些自动化用户来处理应用程序和维护任务,并为其赋予适当的权限(只有具有管理员特权的用户才能执行重新启动)。

  • 用于通过管理员权限(Manage Jenkins -> Manage and Assign Roles -> Assign Roles -> create user and toggle administrator permission)生成用户访问权限,

  • 用于从命令行(Jenkins -> Go to User -> Add new token)生成用于认证Jenkins的访问令牌