Files
gerrit/reinit_gerrit.sh
2025-12-22 17:12:39 +08:00

193 lines
5.5 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Gerrit 重新初始化脚本
# 用于重新创建管理员账号
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 配置变量
GERRIT_HOME="/home/renjianbo/gerrit_install"
GERRIT_VERSION="3.9.0"
GERRIT_PORT="8080"
GERRIT_SSH_PORT="29418"
SERVER_IP="101.43.95.130"
# JDK 17 路径
JAVA17_HOME="/usr/local/java/jdk-17.0.12+7"
export JAVA_HOME=$JAVA17_HOME
export PATH=$JAVA_HOME/bin:$PATH
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}Gerrit 重新初始化脚本${NC}"
echo -e "${GREEN}版本: ${GERRIT_VERSION}${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
# 1. 停止服务
echo -e "${YELLOW}[1/5] 停止 Gerrit 服务...${NC}"
if [ -d "${GERRIT_HOME}/review_site" ]; then
cd ${GERRIT_HOME}/review_site
if [ -f "bin/gerrit.sh" ]; then
bin/gerrit.sh stop 2>/dev/null || true
sleep 2
fi
fi
echo -e "${GREEN}✓ 服务已停止${NC}"
echo ""
# 2. 备份数据
echo -e "${YELLOW}[2/5] 备份现有数据...${NC}"
BACKUP_DIR="${GERRIT_HOME}/backup_before_reinit_$(date +%Y%m%d_%H%M%S)"
mkdir -p ${BACKUP_DIR}
if [ -d "${GERRIT_HOME}/review_site" ]; then
if [ -d "${GERRIT_HOME}/review_site/git" ]; then
cp -r ${GERRIT_HOME}/review_site/git ${BACKUP_DIR}/ 2>/dev/null || true
echo " ✓ 已备份 Git 仓库"
fi
if [ -d "${GERRIT_HOME}/review_site/db" ]; then
cp -r ${GERRIT_HOME}/review_site/db ${BACKUP_DIR}/ 2>/dev/null || true
echo " ✓ 已备份数据库"
fi
if [ -d "${GERRIT_HOME}/review_site/etc" ]; then
cp -r ${GERRIT_HOME}/review_site/etc ${BACKUP_DIR}/ 2>/dev/null || true
echo " ✓ 已备份配置文件"
fi
fi
echo -e "${GREEN}✓ 数据已备份到: ${BACKUP_DIR}${NC}"
echo ""
# 3. 删除旧安装
echo -e "${YELLOW}[3/5] 删除旧安装...${NC}"
if [ -d "${GERRIT_HOME}/review_site" ]; then
rm -rf ${GERRIT_HOME}/review_site
echo -e "${GREEN}✓ 已删除旧的 review_site 目录${NC}"
else
echo -e "${YELLOW}⚠ review_site 目录不存在${NC}"
fi
echo ""
# 4. 重新初始化
echo -e "${YELLOW}[4/5] 重新初始化 Gerrit...${NC}"
cd ${GERRIT_HOME}
if [ ! -f "gerrit-${GERRIT_VERSION}.war" ]; then
echo -e "${RED}错误: 未找到 gerrit-${GERRIT_VERSION}.war${NC}"
exit 1
fi
echo " 正在初始化(这可能需要几分钟)..."
$JAVA_HOME/bin/java -jar gerrit-${GERRIT_VERSION}.war init \
-d review_site \
--batch \
--no-auto-start \
-D gerrit.canonicalWebUrl=http://${SERVER_IP}:${GERRIT_PORT}/ \
--install-plugin=download-commands \
--install-plugin=replication \
--install-plugin=reviewnotes 2>&1 | tail -20
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 初始化完成${NC}"
else
echo -e "${YELLOW}⚠ 初始化过程中可能有警告,但可能已成功完成${NC}"
fi
echo ""
# 5. 配置 Gerrit
echo -e "${YELLOW}[5/5] 配置 Gerrit...${NC}"
cd ${GERRIT_HOME}
# 创建配置文件
cat > review_site/etc/gerrit.config << EOCONFIG
[gerrit]
basePath = git
canonicalWebUrl = http://${SERVER_IP}:${GERRIT_PORT}/
serverId = $(uuidgen 2>/dev/null || echo $(date +%s))
[database]
type = h2
database = db/ReviewDB
[auth]
type = DEVELOPMENT_BECOME_ANY_ACCOUNT
gitBasicAuth = true
[sshd]
listenAddress = *:${GERRIT_SSH_PORT}
[httpd]
listenUrl = http://*:${GERRIT_PORT}/
cookieSecure = false
cookieSameSite = LAX
cookiePath = /
[cache]
directory = cache
[index]
type = LUCENE
[receive]
enableSignedPush = false
EOCONFIG
echo -e "${GREEN}✓ 配置完成${NC}"
echo ""
# 6. 配置使用 Java 17 启动
echo -e "${YELLOW}配置启动脚本...${NC}"
cd ${GERRIT_HOME}/review_site
if [ -f "bin/gerrit.sh" ]; then
cp bin/gerrit.sh bin/gerrit.sh.bak
sed -i "2i export JAVA_HOME=${JAVA17_HOME}\nexport PATH=\$JAVA_HOME/bin:\$PATH" bin/gerrit.sh
echo -e "${GREEN}✓ 已更新 gerrit.sh 使用 Java 17${NC}"
fi
echo ""
# 7. 启动服务
echo -e "${YELLOW}启动 Gerrit 服务...${NC}"
cd ${GERRIT_HOME}/review_site
bin/gerrit.sh start
sleep 5
# 检查服务状态
if bin/gerrit.sh status 2>&1 | grep -q "Gerrit running\|Running"; then
echo -e "${GREEN}✓ 服务启动成功${NC}"
else
echo -e "${YELLOW}⚠ 服务可能未完全启动,请检查日志${NC}"
fi
echo ""
# 输出信息
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}重新初始化完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "${YELLOW}重要提示:${NC}"
echo -e " 1. 第一个登录的用户将自动成为管理员"
echo -e " 2. 请清除浏览器 Cookie 和缓存"
echo -e " 3. 访问: http://${SERVER_IP}:${GERRIT_PORT}"
echo -e " 4. 点击 'Sign In'输入用户名例如admin"
echo -e " 5. 第一个登录的用户将自动成为管理员"
echo ""
echo -e "${YELLOW}访问信息:${NC}"
echo -e " Web 界面: http://${SERVER_IP}:${GERRIT_PORT}"
echo -e " SSH 端口: ${GERRIT_SSH_PORT}"
echo ""
echo -e "${YELLOW}备份位置:${NC}"
echo -e " ${BACKUP_DIR}"
echo ""
echo -e "${YELLOW}常用命令:${NC}"
echo -e " 查看状态: cd ${GERRIT_HOME}/review_site && bin/gerrit.sh status"
echo -e " 查看日志: tail -f ${GERRIT_HOME}/review_site/logs/error_log"
echo -e " 停止服务: cd ${GERRIT_HOME}/review_site && bin/gerrit.sh stop"
echo -e " 重启服务: cd ${GERRIT_HOME}/review_site && bin/gerrit.sh restart"
echo ""
echo -e "${GREEN}========================================${NC}"