1. 概述

在使用 Jenkins 的过程中,重启服务器是一项常见但关键的操作。通常在更新配置、插件或 Jenkins 核心版本时都需要重启。如果处理不当,可能会导致正在进行的构建任务中断,甚至引发数据不一致或服务不可用等问题。

本文将介绍几种安全重启 Jenkins 的方法,确保在不影响当前正在运行的 CI/CD 流水线的前提下完成重启操作。


2. 为什么需要重启 Jenkins

Jenkins 作为一个活跃的开源项目,版本更新频繁,很多插件和配置变更都需要重启才能生效。常见的重启场景包括:

  • 插件升级或安装后需要重启
  • 修改 Jenkins 核心配置后
  • 应用服务器补丁时

由于 Jenkins 通常承载着多个持续集成任务,重启操作必须谨慎进行,以避免服务中断和任务异常。


3. 使用 Jenkins 内建的安全重启功能

Jenkins 提供了内置的安全重启功能,可以在不中断当前运行任务的前提下完成重启

操作步骤如下:

  • 使用管理员账号登录 Jenkins
  • 访问如下 URL(替换为你自己的 Jenkins 地址):
    https://jenkins.example.org/safeRestart

重启过程中,Jenkins 会显示一个全局提示横幅,告知用户服务器即将重启。你可以自定义提示信息:

jenkins server restart

效果说明:

  • 不再接受新的构建任务
  • 所有正在运行的任务执行完成后,Jenkins 自动重启

⚠️ 注意: 这种方式适用于临时维护或插件升级,不建议在高峰期执行。


4. 使用 Jenkins CLI 安全重启

Jenkins 提供了 CLI(命令行接口)工具,可以通过命令行远程触发安全重启操作,非常适合自动化脚本和远程管理。

CLI 工具是一个 JAR 文件,可以从 Jenkins 页面下载:
https://jenkins.example.org/jnlpJars/jenkins-cli.jar

重启命令如下(需替换为你的 Jenkins 地址、用户名和密码):

$ java -jar jenkins-cli.jar -s https://jenkins.example.org -auth username:api_token safe-restart

优点:

  • 支持远程操作
  • 可集成到自动化部署流程中
  • 支持脚本化操作,便于统一管理

⚠️ 踩坑提醒: 确保使用的 Jenkins 用户拥有“Administer Jenkins”权限,否则命令会执行失败。


5. 使用 Groovy 脚本定时重启 Jenkins

如果你希望 Jenkins 在固定时间自动重启(比如每天凌晨),可以通过创建一个 Groovy 脚本任务来实现。

5.1. 创建 Groovy 脚本任务

步骤如下:

  • 进入 Jenkins 控制台 → 新建任务
  • 选择“自由风格项目”,例如命名为 jenkins-restart
  • 在“构建”部分添加一个“执行系统 Groovy 脚本”步骤
  • 输入以下 Groovy 代码:
jenkins.model.Jenkins.instance.safeRestart();

groovy step

5.2. 配置定时重启

  • 在“构建触发器”部分选择“定时构建”
  • 设置 cron 表达式,例如每天凌晨 0 点重启:
0 0 * * *
  • 点击“保存”

优点:

  • 自动化程度高
  • 无需依赖外部脚本或工具
  • 适用于定期维护

⚠️ 注意事项:

  • 确保 Jenkins 安装了 Groovy 插件
  • 避免在高峰期执行定时重启,防止影响构建任务

6. 总结

本文介绍了三种安全重启 Jenkins 的方法,分别是:

方法 适用场景 是否推荐
Jenkins 内建安全重启 手动维护、插件升级 ✅ 推荐
Jenkins CLI 自动化脚本、远程管理 ✅ 推荐
Groovy 脚本 + 定时任务 定期重启、自动化维护 ✅ 推荐

无论你选择哪种方式,都应确保当前没有重要任务在运行,并提前通知相关人员,以减少对团队工作的影响。

通过合理使用这些方法,你可以在不影响 CI/CD 流程的前提下,顺利完成 Jenkins 的重启和升级操作。


原始标题:How to Restart Jenkins Safely