Initial commit: Woodpecker CI config

This commit is contained in:
2026-09-12 07:50:25 +00:00
commit e21149cb82
+90
View File
@@ -0,0 +1,90 @@
# ============================================
# 天网系统 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@114.55.171.188 << '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