Files
gerrit/完全重新安装Gerrit.sh
2025-12-22 17:12:39 +08:00

200 lines
5.9 KiB
Bash
Raw 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 "${RED}警告:将删除所有现有数据!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
# 1. 停止服务
echo -e "${YELLOW}[1/6] 停止 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
echo -e "${GREEN}✓ 服务已停止${NC}"
else
echo -e "${YELLOW}⚠ gerrit.sh 不存在${NC}"
fi
else
echo -e "${YELLOW}⚠ review_site 目录不存在${NC}"
fi
echo ""
# 2. 杀死残留进程
echo -e "${YELLOW}[2/6] 清理残留进程...${NC}"
pkill -f "gerrit.war daemon" 2>/dev/null || true
sleep 1
echo -e "${GREEN}✓ 进程清理完成${NC}"
echo ""
# 3. 删除旧安装
echo -e "${YELLOW}[3/6] 删除旧安装...${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. 检查 Gerrit war 文件
echo -e "${YELLOW}[4/6] 检查 Gerrit 安装包...${NC}"
cd ${GERRIT_HOME}
if [ ! -f "gerrit-${GERRIT_VERSION}.war" ]; then
echo " 下载 Gerrit ${GERRIT_VERSION}..."
wget -q https://gerrit-releases.storage.googleapis.com/gerrit-${GERRIT_VERSION}.war
if [ $? -ne 0 ]; then
echo -e "${RED}下载失败${NC}"
exit 1
fi
echo -e "${GREEN}✓ 下载完成${NC}"
else
echo -e "${GREEN}✓ Gerrit ${GERRIT_VERSION} 已存在${NC}"
fi
echo ""
# 5. 重新初始化
echo -e "${YELLOW}[5/6] 重新初始化 Gerrit...${NC}"
cd ${GERRIT_HOME}
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 ""
# 6. 配置 Gerrit
echo -e "${YELLOW}[6/6] 配置 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 ""
# 7. 配置启动脚本使用 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 ""
# 8. 启动服务
echo -e "${YELLOW}启动 Gerrit 服务...${NC}"
cd ${GERRIT_HOME}/review_site
bin/gerrit.sh start
sleep 8
# 检查服务状态
if bin/gerrit.sh status 2>&1 | grep -q "Gerrit running\|Running"; then
echo -e "${GREEN}✓ 服务启动成功${NC}"
else
echo -e "${YELLOW}⚠ 检查服务状态...${NC}"
bin/gerrit.sh status 2>&1 | head -10
fi
echo ""
# 检查端口
echo -e "${YELLOW}检查端口监听...${NC}"
if command -v netstat &> /dev/null; then
netstat -tlnp 2>/dev/null | grep ":8080" && echo -e "${GREEN}✓ 端口 8080 正在监听${NC}" || echo -e "${YELLOW}⚠ 端口 8080 未被监听${NC}"
elif command -v ss &> /dev/null; then
ss -tlnp 2>/dev/null | grep ":8080" && echo -e "${GREEN}✓ 端口 8080 正在监听${NC}" || echo -e "${YELLOW}⚠ 端口 8080 未被监听${NC}"
fi
echo ""
# 输出信息
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}重新安装完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "${YELLOW}重要提示:${NC}"
echo -e " ${GREEN}1. 第一个登录的用户将自动成为管理员${NC}"
echo -e " 2. 请清除浏览器 Cookie 和缓存(重要!)"
echo -e " 3. 访问: http://${SERVER_IP}:${GERRIT_PORT}"
echo -e " 4. 点击 'Sign In'输入用户名例如admin"
echo -e " 5. 第一个登录的用户将自动成为管理员"
echo -e " 6. 登录后应该能看到 'CREATE NEW' 按钮"
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 " 查看状态: 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}"