1. 引言
Jenkins 是一个广泛使用的开源自动化服务器,常用于自动化构建、测试和部署流程。此外,它还能帮助我们将任务组织成高效的任务批次进行执行。
默认情况下,Jenkins 使用的是其运行所在服务器的系统时区。但在某些场景下,我们可能需要切换 Jenkins 的时区设置,以满足不同地区团队的需求。
本文将介绍几种方法,帮助你为所有用户或单个用户修改 Jenkins 的时区设置。
2. 为什么需要修改 Jenkins 的时区?
当团队分布在多个时区时,我们可能希望 Jenkins 的定时任务、构建日志等信息显示为本地时间,以便于协作与调试。此外,在将 Jenkins 与其他系统集成(如日志分析、通知系统等)时,统一时区也有助于数据一致性。
通过调整时区,我们可以确保分布在不同时区的开发团队,在合适的时间进行构建、测试和部署。
3. 创建测试任务
为了更好地演示时区修改的效果,我们先在 Jenkins 中创建一个测试任务。进入 Jenkins 控制台,点击 New Item 创建新任务即可。
创建完成后,查看该任务的构建历史:
此时构建时间通常是基于服务器默认时区(如 UTC)显示的。我们需要将其修改为我们期望的时区。
4. 修改 Jenkins 的 JVM 环境变量
我们可以通过设置 JVM 参数 -Duser.timezone
或 -Dorg.apache.commons.jelly.tags.fmt.timeZone
来指定 Jenkins 使用的时区。这种方法适用于所有用户,但需要管理员权限。
4.1 Linux 系统配置
如果你使用的是 Ubuntu 或其他 Linux 系统,可以编辑 Jenkins 的 systemd 配置文件:
$ sudo systemctl edit jenkins
添加如下内容:
[Service]
Environment="JAVA_OPTS=-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Karachi"
你也可以使用 user.timezone
参数:
[Service]
Environment="JAVA_OPTS=-Duser.timezone=America/New_York"
保存后重启 Jenkins:
$ sudo systemctl restart jenkins
4.2 Windows 系统配置
如果 Jenkins 安装在 Windows 上,需要编辑安装目录下的 jenkins.xml
文件,找到 <arguments>
标签,添加如下内容:
-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Karachi
或
-Duser.timezone=Asia/Karachi
保存后重启 Jenkins 服务。
4.3 验证修改效果
重新登录 Jenkins,查看任务的构建历史时间是否已更新:
✅ 此方法修改的是 Jenkins 全局时区,无需修改系统时区,适用于多用户环境。
❌ 缺点是需要重启 Jenkins 服务,对生产环境可能有一定影响。
5. 使用 Jenkins 脚本控制台 (Groovy)
如果你不想重启 Jenkins,可以通过脚本控制台临时修改时区设置。此方法适合临时测试,但重启后会失效。
操作步骤如下:
- 登录 Jenkins,进入 Manage Jenkins > Script Console
- 执行如下 Groovy 脚本:
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Karachi')
⚠️ 此方法仅在当前 Jenkins 会话中生效,重启后失效。
如需永久生效,可以将该脚本写入 Jenkins 的初始化脚本中(如 init.groovy.d
目录下的脚本)。
✅ 优点是无需重启 Jenkins,适合快速测试。
❌ 缺点是需要管理员权限,且重启后失效。
6. 设置用户自定义时区
如果你没有管理员权限,也可以为当前用户设置独立的时区。此设置仅影响当前用户的界面显示,不影响其他用户或系统全局设置。
操作步骤如下:
- 登录 Jenkins
- 点击右上角用户名,进入 Configure
- 找到 User Defined Time Zone 选项
- 从下拉菜单中选择目标时区,如
Asia/Karachi
- 点击保存
保存后回到 Jenkins 控制台,查看任务构建历史,时间应已更新为你选择的时区。
✅ 优点是无需权限,适合个人使用。
❌ 缺点是仅对当前用户有效,无法影响全局。
7. 总结
本文介绍了三种常见的 Jenkins 时区修改方式:
方法 | 是否全局生效 | 是否需要重启 | 是否需要管理员权限 | 适用场景 |
---|---|---|---|---|
修改 JVM 参数 | ✅ 是 | ✅ 需要 | ✅ 需要 | 多用户环境,需统一时区 |
脚本控制台 (Groovy) | ❌ 否 | ❌ 不需要 | ✅ 需要 | 快速测试、临时修改 |
用户自定义时区 | ❌ 否 | ❌ 不需要 | ❌ 不需要 | 个人使用,无权限时 |
- 有管理员权限:推荐使用 JVM 参数 或 Groovy 脚本控制台。
- 无管理员权限:使用 用户自定义时区 设置。
根据你的使用场景和权限情况,选择合适的方法即可。