209 lines
6.2 KiB
Bash
209 lines
6.2 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# Gerrit 重新安装脚本
|
|||
|
|
# 用于完全清理并重新安装 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.5.0.1"
|
|||
|
|
GERRIT_PORT="8080"
|
|||
|
|
GERRIT_SSH_PORT="29418"
|
|||
|
|
SERVER_IP="101.43.95.130"
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}========================================${NC}"
|
|||
|
|
echo -e "${GREEN}Gerrit 重新安装脚本${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
|
|||
|
|
fi
|
|||
|
|
fi
|
|||
|
|
echo -e "${GREEN}✓ 服务已停止${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 2. 备份现有数据(可选)
|
|||
|
|
echo -e "${YELLOW}[2/6] 备份现有数据...${NC}"
|
|||
|
|
BACKUP_DIR="${GERRIT_HOME}/backup_$(date +%Y%m%d_%H%M%S)"
|
|||
|
|
mkdir -p ${BACKUP_DIR}
|
|||
|
|
|
|||
|
|
if [ -d "${GERRIT_HOME}/review_site" ]; then
|
|||
|
|
# 备份 Git 仓库
|
|||
|
|
if [ -d "${GERRIT_HOME}/review_site/git" ]; then
|
|||
|
|
echo " 备份 Git 仓库..."
|
|||
|
|
cp -r ${GERRIT_HOME}/review_site/git ${BACKUP_DIR}/ 2>/dev/null || true
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 备份数据库
|
|||
|
|
if [ -d "${GERRIT_HOME}/review_site/db" ]; then
|
|||
|
|
echo " 备份数据库..."
|
|||
|
|
cp -r ${GERRIT_HOME}/review_site/db ${BACKUP_DIR}/ 2>/dev/null || true
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 备份配置
|
|||
|
|
if [ -d "${GERRIT_HOME}/review_site/etc" ]; then
|
|||
|
|
echo " 备份配置文件..."
|
|||
|
|
cp -r ${GERRIT_HOME}/review_site/etc ${BACKUP_DIR}/ 2>/dev/null || true
|
|||
|
|
fi
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}✓ 数据已备份到: ${BACKUP_DIR}${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 3. 清理旧安装
|
|||
|
|
echo -e "${YELLOW}[3/6] 清理旧安装...${NC}"
|
|||
|
|
if [ -d "${GERRIT_HOME}/review_site" ]; then
|
|||
|
|
rm -rf ${GERRIT_HOME}/review_site
|
|||
|
|
echo " 已删除旧的 review_site 目录"
|
|||
|
|
fi
|
|||
|
|
echo -e "${GREEN}✓ 清理完成${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 4. 检查并下载 Gerrit
|
|||
|
|
echo -e "${YELLOW}[4/6] 检查 Gerrit 安装包...${NC}"
|
|||
|
|
cd ${GERRIT_HOME}
|
|||
|
|
|
|||
|
|
if [ ! -f "gerrit-${GERRIT_VERSION}.war" ]; then
|
|||
|
|
echo " 下载 Gerrit ${GERRIT_VERSION}..."
|
|||
|
|
wget -q --show-progress https://gerrit-releases.storage.googleapis.com/gerrit-${GERRIT_VERSION}.war
|
|||
|
|
else
|
|||
|
|
echo " Gerrit ${GERRIT_VERSION} 已存在,跳过下载"
|
|||
|
|
fi
|
|||
|
|
echo -e "${GREEN}✓ Gerrit 安装包就绪${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 5. 重新初始化 Gerrit
|
|||
|
|
echo -e "${YELLOW}[5/6] 初始化 Gerrit...${NC}"
|
|||
|
|
cd ${GERRIT_HOME}
|
|||
|
|
|
|||
|
|
# 检查 Java 版本并使用 Java 17(优先)或 Java 11
|
|||
|
|
JAVA17_HOME="/usr/local/java/jdk-17.0.12+7"
|
|||
|
|
JAVA11_HOME="/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64"
|
|||
|
|
|
|||
|
|
if [ -d "$JAVA17_HOME" ]; then
|
|||
|
|
export JAVA_HOME=$JAVA17_HOME
|
|||
|
|
export PATH=$JAVA_HOME/bin:$PATH
|
|||
|
|
echo " 使用 Java 17: $JAVA_HOME"
|
|||
|
|
$JAVA_HOME/bin/java -version 2>&1 | head -1
|
|||
|
|
elif [ -d "$JAVA11_HOME" ]; then
|
|||
|
|
export JAVA_HOME=$JAVA11_HOME
|
|||
|
|
export PATH=$JAVA_HOME/bin:$PATH
|
|||
|
|
echo " 使用 Java 11: $JAVA_HOME"
|
|||
|
|
$JAVA_HOME/bin/java -version 2>&1 | head -1
|
|||
|
|
else
|
|||
|
|
# 检查默认 Java 版本
|
|||
|
|
JAVA_VERSION=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
|
|||
|
|
if [ "$JAVA_VERSION" -lt 11 ]; then
|
|||
|
|
echo -e "${RED}错误: 需要 Java 11 或更高版本,当前版本: $JAVA_VERSION${NC}"
|
|||
|
|
echo "请先安装 Java 11 或 Java 17"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 非交互式初始化
|
|||
|
|
echo " 正在初始化(这可能需要几分钟)..."
|
|||
|
|
$JAVA_HOME/bin/java -jar gerrit-${GERRIT_VERSION}.war init \
|
|||
|
|
-d review_site \
|
|||
|
|
--batch \
|
|||
|
|
--no-auto-start \
|
|||
|
|
--install-plugin=download-commands \
|
|||
|
|
--install-plugin=replication \
|
|||
|
|
--install-plugin=reviewnotes || true
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}✓ 初始化完成${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 6. 配置 Gerrit
|
|||
|
|
echo -e "${YELLOW}[6/6] 配置 Gerrit...${NC}"
|
|||
|
|
cd ${GERRIT_HOME}
|
|||
|
|
|
|||
|
|
# 创建配置文件(使用正确的 IP 和 Cookie 设置)
|
|||
|
|
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
|
|||
|
|
[sshd]
|
|||
|
|
listenAddress = *:${GERRIT_SSH_PORT}
|
|||
|
|
[httpd]
|
|||
|
|
listenUrl = http://*:${GERRIT_PORT}/
|
|||
|
|
cookieSecure = false
|
|||
|
|
cookieSameSite = LAX
|
|||
|
|
[cache]
|
|||
|
|
directory = cache
|
|||
|
|
[index]
|
|||
|
|
type = LUCENE
|
|||
|
|
[receive]
|
|||
|
|
enableSignedPush = false
|
|||
|
|
EOCONFIG
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}✓ 配置完成${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 7. 启动服务
|
|||
|
|
echo -e "${YELLOW}启动 Gerrit 服务...${NC}"
|
|||
|
|
cd ${GERRIT_HOME}/review_site
|
|||
|
|
|
|||
|
|
# 使用 Java 17 启动(如果可用),否则使用 Java 11
|
|||
|
|
if [ -d "/usr/local/java/jdk-17.0.12+7" ]; then
|
|||
|
|
JAVA_HOME=/usr/local/java/jdk-17.0.12+7 bin/gerrit.sh start
|
|||
|
|
elif [ -d "/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64" ]; then
|
|||
|
|
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64 bin/gerrit.sh start
|
|||
|
|
else
|
|||
|
|
bin/gerrit.sh start
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
sleep 5
|
|||
|
|
|
|||
|
|
# 检查服务状态
|
|||
|
|
if bin/gerrit.sh status | grep -q "Gerrit 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 " Web 界面: http://${SERVER_IP}:${GERRIT_PORT}"
|
|||
|
|
echo -e " SSH 端口: ${GERRIT_SSH_PORT}"
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${YELLOW}首次登录:${NC}"
|
|||
|
|
echo -e " 1. 访问 http://${SERVER_IP}:${GERRIT_PORT}"
|
|||
|
|
echo -e " 2. 点击 'Sign In'"
|
|||
|
|
echo -e " 3. 点击 'New Account' 注册新账户"
|
|||
|
|
echo -e " 4. 第一个注册的用户将自动成为管理员"
|
|||
|
|
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/httpd_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}"
|
|||
|
|
|