# ============================================ # 天网系统 CI/CD 流水线(Woodpecker CI v3) # # 流程:push master → 部署测试服(自动) # deployment → 部署生产服(手动) # CI修复: branch配置已修正为master # # 构建在目标服务器上通过 docker compose --build 完成 # ============================================ steps: # ── 部署测试服(push 自动触发) ── - name: deploy-test image: ubuntu:22.04 environment: SSH_KEY: from_secret: SSH_KEY SSH_KNOWN_HOSTS: from_secret: SSH_KNOWN_HOSTS commands: - DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y openssh-client - printf '%s' "$SSH_KEY" > /tmp/deploy_key && chmod 600 /tmp/deploy_key - eval $(ssh-agent -s) - ssh-add /tmp/deploy_key - rm -f /tmp/deploy_key - mkdir -p ~/.ssh - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts - | ssh -o StrictHostKeyChecking=no root@192.168.3.157 << 'DEPLOY_TEST' cd /home/yang/doctor-match-deploy git pull origin master || true cd deploy cp .env .env.bak 2>/dev/null || true cp -f /tmp/.env.test .env 2>/dev/null || true docker compose down docker compose up -d --build docker compose ps # --- 前端配置修复(使用相对路径走 nginx 代理)--- FRONTEND_DIR="/home/yang/doctor-match-deploy/frontend-dist" mkdir -p "$FRONTEND_DIR" 2>/dev/null || true echo 'window._VBEN_ADMIN_PRO_APP_CONF_={"VITE_GLOB_API_URL":"/api/v1"};Object.freeze(window._VBEN_ADMIN_PRO_APP_CONF_);Object.defineProperty(window,"_VBEN_ADMIN_PRO_APP_CONF_",{configurable:false,writable:false,});' > "$FRONTEND_DIR/_app.config.js" 2>/dev/null || true echo "=== 测试服部署完成 ===" DEPLOY_TEST when: event: - push # ── 部署生产服(手动/deployment 触发) ── - name: deploy-prod image: ubuntu:22.04 environment: SSH_KEY_PROD: from_secret: SSH_KEY_PROD SSH_KNOWN_HOSTS_PROD: from_secret: SSH_KNOWN_HOSTS_PROD commands: - echo "=== 部署到生产服 ===" - DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y openssh-client - printf '%s' "$SSH_KEY_PROD" > /tmp/deploy_key && chmod 600 /tmp/deploy_key - eval $(ssh-agent -s) - ssh-add /tmp/deploy_key - rm -f /tmp/deploy_key - mkdir -p ~/.ssh - echo "$SSH_KNOWN_HOSTS_PROD" > ~/.ssh/known_hosts - | ssh -o StrictHostKeyChecking=no root@42.120.60.12 << 'DEPLOY_PROD' cd /opt/tianwang-order-matching # 生产服无法访问内网 Gitea,通过公网域名 pull git remote set-url origin https://liuyang:Liuyang%261991@git.ygaixiao.top/yang/tianwang-order-matching.git git pull origin master || true cd deploy cp .env .env.bak 2>/dev/null || true cp -f .env.prod .env 2>/dev/null || true docker compose down docker compose --env-file .env.prod up -d --build docker compose ps # --- 前端配置修复(使用相对路径走 nginx 代理)--- FRONTEND_DIR="/opt/tianwang-order-matching/frontend-dist" mkdir -p "$FRONTEND_DIR" 2>/dev/null || true echo 'window._VBEN_ADMIN_PRO_APP_CONF_={"VITE_GLOB_API_URL":"/api/v1"};Object.freeze(window._VBEN_ADMIN_PRO_APP_CONF_);Object.defineProperty(window,"_VBEN_ADMIN_PRO_APP_CONF_",{configurable:false,writable:false,});' > "$FRONTEND_DIR/_app.config.js" 2>/dev/null || true echo "=== 生产服部署完成 ===" DEPLOY_PROD when: event: - deployment - manual