CentOS 上 Jenkins 配置文件管理指南
一 关键配置路径与用途
- 系统级配置文件:/etc/sysconfig/jenkins(RPM 包安装时生效),常用键包括:JENKINS_HOME(主目录)、JENKINS_PORT(端口)、JENKINS_USER(运行用户)、JENKINS_JAVA_OPTIONS(JVM 参数)。
- 主目录与环境:JENKINS_HOME 默认 /var/lib/jenkins,其下核心子目录与文件包括:config.xml(全局配置)、jobs/(任务配置与构建记录)、plugins/(插件)、users/(用户)、secrets/(密钥)、workspace/(工作区)、logs/(日志)。
- 日志文件:/var/log/jenkins/jenkins.log。
- 其他安装方式的主目录位置:WAR 直接运行时通常在运行用户的 ~/.jenkins;Tomcat 部署时在 $CATALINA_HOME/webapps/jenkins/。
以上路径在不同安装方式(RPM、WAR、Tomcat)下可能不同,请以实际环境为准。
二 系统级配置修改与生效
- 修改系统参数(端口、主目录、运行用户等):编辑 /etc/sysconfig/jenkins,例如:
- 修改端口:JENKINS_PORT=“8081”
- 修改主目录:JENKINS_HOME=“/data/jenkins”(确保目录存在且属主为 jenkins:jenkins)
- 修改运行用户:JENKINS_USER=“jenkins”
- 设置 JVM 参数(如时区):JENKINS_JAVA_OPTIONS=“-Djava.awt.headless=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai”
- 使配置生效:
- systemd 环境执行:systemctl restart jenkins;如需开机自启:systemctl enable jenkins。
- 若调整了 JENKINS_HOME 或涉及系统服务文件变更,建议先备份并按需执行 systemctl daemon-reload。
- 注意:修改端口后,需确保防火墙放行对应端口(如 firewalld 或云安全组)。
三 主目录配置与备份恢复
- 手动备份与恢复(适用于迁移与灾备):
- 建议全量备份 $JENKINS_HOME,至少覆盖:config.xml、hudson.xml*、jobs/、users/、secrets/、plugins/ 等关键路径。
- 恢复时停止 Jenkins,将备份内容解压/拷回新的 $JENKINS_HOME,再启动服务。
- 使用插件进行备份与恢复:
- ThinBackup:在“系统管理 → ThinBackup”中配置备份目录与策略,支持“立即备份”和“按时间点恢复”。
- SCM Sync Configuration:将配置变更自动提交到 Git/SVN,便于审计与版本化管理。
- 使用 CLI 导出/导入任务配置:
- 列出任务:java -jar jenkins-cli.jar -s http://JENKINS_URL list-jobs
- 导出单个任务:java -jar jenkins-cli.jar -s http://JENKINS_URL get-job JOB_NAME > JOB_NAME.xml
- 批量导出/导入可结合脚本与管道实现。
- 凭证与密钥:备份 $JENKINS_HOME/secrets/ 与 credentials.xml,注意其为加密存储,迁移后仍需原密钥材料才能解密使用。
四 配置即代码 JCasC 实践
- 插件与原则:Configuration as Code(JCasC) 插件允许用 YAML 管理绝大多数系统与安全配置;注意它不负责插件的安装,应用配置前需确保相关插件已安装。
- 基本步骤:
- 安装 JCasC 插件,在“系统管理 → 配置即代码”中指定 JCasC YAML 配置文件 路径(通常位于 $JENKINS_HOME/casc_configs/)。
- 编写或导出 YAML(可从现有实例导出参考结构),内容包括系统设置、安全域、工具链、代理等。
- 应用配置并重启(如需要),在 UI 校验生效结果。
- 适用场景:标准化交付、快速重建实例、环境一致性保障与审计。
五 变更与迁移注意事项
- 版本与兼容性:配置可能依赖特定 Jenkins/插件版本,迁移或回滚前请充分验证。
- 权限与所有权:确保 $JENKINS_HOME 及子目录属主为 jenkins:jenkins,避免因权限导致启动或构建失败。
- 安全合规:配置与日志中可能包含敏感信息(如凭证、密钥、令牌),备份、传输与存储需加密并做好访问控制。
- 端口与网络:变更 JENKINS_PORT 后同步更新防火墙/安全组规则,避免访问中断。
- 首次启动与解锁:全新实例的管理员密码位于 $JENKINS_HOME/secrets/initialAdminPassword,首次访问需使用该密码完成解锁。