【问题标题】:Need to restart Jenkins service programmatically on a schedule需要按计划以编程方式重启 Jenkins 服务
【发布时间】:2014-01-17 18:20:45
【问题描述】:

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

【问题讨论】:

  • 如果我们可以定义一个在硬编码的日常维护窗口期间安排重启的作业,那将更加有用。

标签: windows jenkins


【解决方案1】:

如果上述 CLI 方法不起作用(在我的情况下,它失败了:hudson.security.AccessDeniedException2:anonymous is missing theOverall/Read 权限)

您可以创建Groovy plugin 构建步骤和“执行系统 ​​Groovy 脚本”:

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

或新的 Jenkins 实例

import jenkins.model.*
Jenkins.instance.doSafeRestart(null);

然后,您可以将此作业设置为按计划触发。 例如,要在每天午夜重新启动 Jenkins,请设置“定期构建”:H 00 * * *

【讨论】:

  • 恕我直言,这一定是答案——这完全内置于 Jenkins master 中。不依赖于任何从属或外部进程。
  • 喜欢这个解决方案,不知道有可能。
  • 确保您使用 SYSTEM groovy 脚本的构建步骤,否则这不起作用。
【解决方案2】:

在此处为来自 Google 的其他人发布此信息。您可以使用 CLI 将作业添加到 Jenkins 以重新启动自身。添加一个带有要执行的 shell 步骤的作业:

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

【讨论】:

    【解决方案3】:

    您可以在Jenkins CLI 中使用安全重启命令。

    【讨论】:

    • 我可以使用 API Token,还是需要设置 SSH?我更喜欢前者。
    • 使用 SSH 身份验证不起作用。获取身份验证失败。不接受私钥。乌格。
    【解决方案4】:

    对于启用 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"
    

    【讨论】:

      【解决方案5】:

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

      --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 -&gt; Manage and Assign Roles -&gt; Assign Roles -&gt; create user and toggle administrator permission),

      • 用于从命令行生成访问令牌以验证 Jenkins (Jenkins -&gt; Go to User -&gt; Add new token)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        • 2019-02-18
        • 2011-10-03
        • 1970-01-01
        相关资源
        最近更新 更多