name: Deploy Finance MCP Service on: push: branches: - main paths: - 'apps/finance-mcp-service/**' - 'pnpm-lock.yaml' - 'pnpm-workspace.yaml' workflow_dispatch: env: DEPLOY_PATH: /home/atai/kt-financial-system MCP_PACKAGE: '@vben/finance-mcp-service' jobs: build-mcp: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '20' - name: Setup pnpm uses: pnpm/action-setup@v2 with: version: 9 - name: Get pnpm store directory id: pnpm-cache run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Setup pnpm cache uses: actions/cache@v3 with: path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} key: ${{ runner.os }}-mcp-pnpm-${{ hashFiles('pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-mcp-pnpm- - name: Install dependencies (MCP only) run: pnpm install --filter ${MCP_PACKAGE}... --frozen-lockfile - name: Typecheck MCP service run: pnpm --filter ${MCP_PACKAGE} typecheck - name: Build MCP service run: pnpm --filter ${MCP_PACKAGE} build deploy-mcp: runs-on: ubuntu-latest needs: build-mcp steps: - name: Deploy MCP artifacts to server uses: appleboy/ssh-action@v1.0.0 with: host: ${{ secrets.SERVER_HOST || '172.16.74.149' }} username: ${{ secrets.SERVER_USER || 'atai' }} password: ${{ secrets.SERVER_PASSWORD || 'wengewudi666808' }} port: ${{ secrets.SERVER_PORT || '22' }} command_timeout: 30m script: | set -Eeuo pipefail LOG_DIR=/home/atai/logs mkdir -p "${LOG_DIR}" LOG_FILE="${LOG_DIR}/deploy-mcp-$(date +%Y%m%d-%H%M%S).log" exec > >(tee -a "${LOG_FILE}") 2>&1 echo "📄 当前部署日志: ${LOG_FILE}" echo "🚀 部署 Finance MCP 服务" cd /home/atai if [ ! -d "kt-financial-system" ]; then echo "📥 首次部署,正在克隆仓库..." git clone https://gitea.ktyun.cc/chenjiangjiang/kt-financial-system.git fi cd ${DEPLOY_PATH} git fetch origin main git reset --hard origin/main echo "🧱 使用容器化 Node 环境构建..." sudo docker run --rm \ -v $(pwd):/workspace \ -w /workspace \ node:20-bullseye bash -lc "npm install -g pnpm@9 && pnpm install --filter ${MCP_PACKAGE}... --frozen-lockfile && pnpm --filter ${MCP_PACKAGE} build" echo "🗂 生成运行入口,方便手动或自动触发 MCP 服务" cat <<'EOF' | sudo tee /home/atai/run-finance-mcp.sh >/dev/null #!/bin/bash set -e cd /home/atai/kt-financial-system exec pnpm --filter @vben/finance-mcp-service start EOF sudo chmod +x /home/atai/run-finance-mcp.sh echo "✅ MCP 服务代码已更新至 $(git rev-parse --short HEAD)"