# Gerrit 升级指南 ## 概述 本指南说明如何将 Gerrit 升级到最新版本(3.13.1),并使用 JDK 17 运行。 ## 当前状态 - ✅ JDK 17 已安装: `/usr/local/java/jdk-17.0.12+7` - ✅ 当前 Gerrit 版本: 3.3.8 或 3.9.0 - 🎯 目标版本: 3.13.1(支持 JDK 17) ## 升级步骤 ### 方法一:使用升级脚本(推荐) ```bash cd /home/renjianbo/gerrit ./upgrade_gerrit.sh ``` 升级脚本会自动: 1. ✅ 验证 JDK 17 安装 2. ✅ 停止现有 Gerrit 服务 3. ✅ 备份所有数据(Git 仓库、数据库、配置、插件) 4. ✅ 下载 Gerrit 3.13.1 5. ✅ 升级 Gerrit(保留现有数据) 6. ✅ 配置 Gerrit 使用 JDK 17 7. ✅ 启动服务 ### 方法二:手动升级 #### 1. 停止 Gerrit 服务 ```bash cd /home/renjianbo/gerrit_install/review_site bin/gerrit.sh stop ``` #### 2. 备份数据 ```bash cd /home/renjianbo/gerrit_install BACKUP_DIR="backup_$(date +%Y%m%d_%H%M%S)" mkdir -p $BACKUP_DIR # 备份 Git 仓库 cp -r review_site/git $BACKUP_DIR/ 2>/dev/null || true # 备份数据库 cp -r review_site/db $BACKUP_DIR/ 2>/dev/null || true # 备份配置 cp -r review_site/etc $BACKUP_DIR/ 2>/dev/null || true # 备份插件 cp -r review_site/plugins $BACKUP_DIR/ 2>/dev/null || true ``` #### 3. 下载新版本 ```bash cd /home/renjianbo/gerrit_install wget https://gerrit-releases.storage.googleapis.com/gerrit-3.13.1.war ``` #### 4. 设置 JDK 17 ```bash export JAVA_HOME=/usr/local/java/jdk-17.0.12+7 export PATH=$JAVA_HOME/bin:$PATH # 验证 java -version ``` #### 5. 升级 Gerrit ```bash cd /home/renjianbo/gerrit_install java -jar gerrit-3.13.1.war init \ -d review_site \ --batch \ --no-auto-start \ --install-plugin=download-commands \ --install-plugin=replication \ --install-plugin=reviewnotes ``` #### 6. 配置使用 JDK 17 启动 编辑 `review_site/bin/gerrit.sh`,在文件开头添加: ```bash export JAVA_HOME=/usr/local/java/jdk-17.0.12+7 export PATH=$JAVA_HOME/bin:$PATH ``` #### 7. 启动服务 ```bash cd /home/renjianbo/gerrit_install/review_site bin/gerrit.sh start ``` #### 8. 验证升级 ```bash # 检查服务状态 bin/gerrit.sh status # 查看日志 tail -f logs/error_log # 访问 Web 界面 # http://101.43.95.130:8080 ``` ## 版本兼容性 | Gerrit 版本 | 最低 JDK 要求 | 推荐 JDK | |------------|--------------|---------| | 3.3.x | JDK 11 | JDK 11 | | 3.9.x | JDK 17 | JDK 17 | | 3.13.x | JDK 17 | JDK 17 | ## 升级后验证 ### 1. 检查版本 访问 Gerrit Web 界面,在页面底部查看版本号,应该显示 `3.13.1`。 ### 2. 检查 Java 版本 ```bash cd /home/renjianbo/gerrit_install/review_site ps aux | grep gerrit | grep java ``` 应该看到进程使用 JDK 17。 ### 3. 测试功能 - ✅ 登录 Web 界面 - ✅ 查看项目列表 - ✅ 创建/查看变更 - ✅ SSH 连接测试 ## 回滚(如果需要) 如果升级后出现问题,可以回滚到之前的版本: ```bash # 1. 停止服务 cd /home/renjianbo/gerrit_install/review_site bin/gerrit.sh stop # 2. 恢复备份 cd /home/renjianbo/gerrit_install BACKUP_DIR="backup_YYYYMMDD_HHMMSS" # 替换为实际的备份目录名 # 恢复 Git 仓库 rm -rf review_site/git cp -r $BACKUP_DIR/git review_site/ # 恢复数据库 rm -rf review_site/db cp -r $BACKUP_DIR/db review_site/ # 恢复配置 rm -rf review_site/etc cp -r $BACKUP_DIR/etc review_site/ # 恢复插件 rm -rf review_site/plugins cp -r $BACKUP_DIR/plugins review_site/ 2>/dev/null || true # 3. 使用旧版本 war 文件重新初始化 # (使用之前下载的 gerrit-3.3.8.war 或 gerrit-3.9.0.war) # 4. 启动服务 cd review_site bin/gerrit.sh start ``` ## 常见问题 ### Q: 升级后服务无法启动? **A:** 检查日志文件: ```bash tail -f /home/renjianbo/gerrit_install/review_site/logs/error_log ``` 常见原因: - JDK 版本不匹配 - 端口被占用 - 配置文件错误 ### Q: 升级后数据丢失? **A:** 检查备份目录: ```bash ls -la /home/renjianbo/gerrit_install/backup_* ``` 可以从备份目录恢复数据。 ### Q: 如何确认使用的是 JDK 17? **A:** 运行以下命令: ```bash cd /home/renjianbo/gerrit_install/review_site ps aux | grep gerrit | grep -o '/[^ ]*java[^ ]*' | head -1 | xargs -I {} {} -version ``` ### Q: 升级需要多长时间? **A:** 通常需要 2-5 分钟,取决于: - 网络速度(下载新版本) - 数据量大小(备份和升级) - 服务器性能 ## 注意事项 1. ⚠️ **备份重要**:升级前务必备份所有数据 2. ⚠️ **停机时间**:升级过程中服务会停止,建议在维护窗口进行 3. ⚠️ **测试环境**:建议先在测试环境验证升级流程 4. ⚠️ **插件兼容性**:某些插件可能需要更新以支持新版本 5. ⚠️ **配置检查**:升级后检查配置文件,确保所有设置正确 ## 相关文件 - 升级脚本: `/home/renjianbo/gerrit/upgrade_gerrit.sh` - 安装脚本: `/home/renjianbo/gerrit/install_gerrit.sh` - 重新安装脚本: `/home/renjianbo/gerrit/reinstall_gerrit.sh` - Gerrit 目录: `/home/renjianbo/gerrit_install/` ## 技术支持 如果遇到问题,可以: 1. 查看日志文件 2. 检查备份数据 3. 参考 Gerrit 官方文档: https://www.gerritcodereview.com/