name: Deploy to Server on: [push] jobs: deploy: runs-on: ubuntu steps: - name: Deploy using SSH uses: https://gitea.com/actions/appleboy-ssh-action@v1.0.3 with: host: 6.6.6.66 username: quant password: 123quant-speed script: | TARGET_DIR="/home/quant/data/dev/deploy" SUDO_PASSWORD="123quant-speed" # 1. 切换到目标目录 echo "===== 切换到目标目录: $TARGET_DIR =====" cd $TARGET_DIR || { echo "错误:目录 $TARGET_DIR 不存在!" exit 1 } # 2. 停止并移除 Docker 容器 echo -e "\n===== 停止并清理 Docker =====" echo $SUDO_PASSWORD | sudo -S docker compose down # 3. 拉取最新代码(通过 gitea API 下载压缩包) echo -e "\n===== 拉取最新代码 =====" ARCHIVE_URL="https://gitea.tangledup-ai.com/quant-speed-AI/Scoring-System/archive/main.tar.gz" AUTH_HEADER="Authorization: Basic $(echo -n 'sdd:zsj981107' | base64)" rm -f /tmp/scoring.tar.gz DOWNLOAD_OK=false for i in 1 2 3; do echo "第 $i 次尝试下载代码包..." wget --header="$AUTH_HEADER" -O /tmp/scoring.tar.gz "$ARCHIVE_URL" 2>&1 || true FILE_SIZE=$(stat -c%s /tmp/scoring.tar.gz 2>/dev/null || echo 0) echo "下载文件大小: $FILE_SIZE bytes" if [ "$FILE_SIZE" -gt 10240 ] && tar -tzf /tmp/scoring.tar.gz > /dev/null 2>&1; then DOWNLOAD_OK=true break fi echo "文件不完整,等待5秒后重试..." rm -f /tmp/scoring.tar.gz sleep 5 done if [ "$DOWNLOAD_OK" != "true" ]; then echo "错误:代码下载失败,终止部署" exit 1 fi echo "解压代码..." tar -xzf /tmp/scoring.tar.gz -C /tmp/ rsync -av --exclude='.env' --exclude='media/' /tmp/Scoring-System/ $TARGET_DIR/ rm -rf /tmp/scoring.tar.gz /tmp/Scoring-System echo "代码更新完成" # 4. 创建/更新 .env 文件 echo -e "\n===== 配置环境变量 =====" cat > backend/.env <