使用echo密码|sudo-S方式执行sudo命令
All checks were successful
Deploy to Server / deploy (push) Successful in 2s

This commit is contained in:
爽哒哒
2026-03-21 00:25:55 +08:00
parent ba71db60bb
commit 7b41fd4d2c

View File

@@ -15,58 +15,49 @@ jobs:
TARGET_DIR="/home/quant/scoring-system"
REPO_URL="https://gitea.tangledup-ai.com/quant-speed-AI/Scoring-System"
BRANCH="main"
PASSWORD="123quant-speed"
# 1. 检查用户是否在 docker 组
echo "===== 检查 docker 权限 ====="
if groups | grep -q docker; then
echo "用户已在 docker 组"
DOCKER_CMD="docker"
else
echo "用户不在 docker 组,使用 sudo"
DOCKER_CMD="sudo docker"
fi
# 2. 创建目标目录
echo "===== 创建目标目录: $TARGET_DIR ====="
mkdir -p $TARGET_DIR
# 3. 备份旧数据(如果存在)
echo "===== 备份配置 ====="
if [ -f "$TARGET_DIR/backend/.env" ]; then
cp $TARGET_DIR/backend/.env /tmp/scoring-env-backup 2>/dev/null || true
fi
# 4. 清理旧代码
echo "===== 清理旧代码 ====="
cd $TARGET_DIR
rm -rf .git .gitea docker-compose.yml backend frontend 2>/dev/null || true
# 5. 下载最新代码(使用 curl
echo "===== 下载最新代码 ====="
curl -L -o /tmp/scoring-system.tar.gz "$REPO_URL/archive/refs/heads/$BRANCH.tar.gz" 2>&1 || {
echo "下载失败,尝试备用方案..."
wget -O /tmp/scoring-system.tar.gz "$REPO_URL/archive/refs/heads/$BRANCH.tar.gz" 2>&1 || exit 1
# 使用 sudo 的函数
run_sudo() {
echo "$PASSWORD" | sudo -S "$@" 2>/dev/null
}
# 6. 解压代码
echo "===== 解压代码 ====="
tar -xzf /tmp/scoring-system.tar.gz -C $TARGET_DIR
mv $TARGET_DIR/Scoring-System-*/* $TARGET_DIR/
rm -rf $TARGET_DIR/Scoring-System-*
rm /tmp/scoring-system.tar.gz
# 1. 创建目标目录
echo "===== 创建目标目录: $TARGET_DIR ====="
run_sudo mkdir -p $TARGET_DIR
run_sudo chown -R quant:quant $TARGET_DIR
# 7. 恢复配置
# 2. 备份 .env
echo "===== 备份配置 ====="
if [ -f "$TARGET_DIR/backend/.env" ]; then
cp $TARGET_DIR/backend/.env /tmp/scoring-env-backup
fi
# 3. 下载最新代码
echo "===== 下载最新代码 ====="
cd $TARGET_DIR
curl -L -o /tmp/scoring-system.tar.gz "$REPO_URL/archive/refs/heads/$BRANCH.tar.gz"
# 4. 解压代码
echo "===== 解压代码 ====="
run_sudo tar -xzf /tmp/scoring-system.tar.gz -C $TARGET_DIR
run_sudo mv $TARGET_DIR/Scoring-System-*/* $TARGET_DIR/
run_sudo rm -rf $TARGET_DIR/Scoring-System-*
rm /tmp/scoring-system.tar.gz
run_sudo chown -R quant:quant $TARGET_DIR
# 5. 恢复配置
echo "===== 恢复配置 ====="
if [ -f /tmp/scoring-env-backup ]; then
cp /tmp/scoring-env-backup $TARGET_DIR/backend/.env
fi
# 8. 停止并移除 Docker 容器
# 6. 停止并移除 Docker 容器
echo -e "\n===== 停止并清理 Docker ====="
cd $TARGET_DIR
$DOCKER_CMD compose down 2>/dev/null || true
echo "$PASSWORD" | sudo -S docker compose down 2>/dev/null || true
# 9. 创建 .env 文件(如果没有)
# 7. 创建 .env 文件(如果没有)
echo -e "\n===== 配置环境变量 ====="
if [ ! -f $TARGET_DIR/backend/.env ]; then
mkdir -p $TARGET_DIR/backend
@@ -89,8 +80,8 @@ jobs:
EOF
fi
# 10. 重新启动 Docker 容器
# 8. 重新启动 Docker 容器
echo -e "\n===== 启动 Docker 容器 ====="
$DOCKER_CMD compose up -d --build
echo "$PASSWORD" | sudo -S docker compose up -d --build
echo -e "\n===== 操作完成!====="