Initial commit: Woodpecker CI config
This commit is contained in:
Executable
+90
@@ -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
|
||||
Reference in New Issue
Block a user