name: deploy-digital-me # push 到 main → 只同步「代码 / 逻辑」,图片·音频·字体等素材留在 NAS 上不重复传。 # 目标:http://192.168.110.4:8090 # 改了素材(图片/音乐/字体)请手动运行 Sync Assets 工作流做一次全量同步。 on: push: branches: [main] paths-ignore: - '战役素材/**' - '水墨遮罩/**' - '客户成片/**' - 'artifacts/**' workflow_dispatch: {} jobs: deploy: runs-on: ubuntu-latest env: TZ: Asia/Shanghai GITEA_URL: http://192.168.110.4:3000 REPO_PATH: admin/digital-me-history TARGET_DIR: /volume1/docker/digital-me NAS: 18702851751@192.168.110.4 steps: - name: 拉取代码(直接从 Gitea,不依赖 github) run: | set -e git config --global --add safe.directory '*' git clone --depth 1 "${GITEA_URL}/${REPO_PATH}.git" . - name: 只拉可能随代码变化的 LFS 产物 run: | set -e apt-get update -qq apt-get install -y -qq git-lfs git lfs install # 只拉 *.bundle.js 这类代码产物;图片/音频/字体不拉 git lfs pull --include='*.bundle.js' || true - name: 同步代码到 NAS 并重建(媒体素材不动) run: | set -e tar czf - \ --exclude=.git \ --exclude='*.png' --exclude='*.jpg' --exclude='*.jpeg' --exclude='*.gif' \ --exclude='*.webp' --exclude='*.bmp' --exclude='*.ico' \ --exclude='*.ttf' --exclude='*.otf' --exclude='*.woff' --exclude='*.woff2' \ --exclude='*.m4a' --exclude='*.mp3' --exclude='*.wav' \ --exclude='*.mp4' --exclude='*.mov' --exclude='*.webm' \ --exclude='*.psd' \ digital-me-web digital-me-backend compose.yaml \ | ssh -i /root/.ssh/nas_ci \ -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR \ "${NAS}" \ "mkdir -p $TARGET_DIR && tar xzf - -C $TARGET_DIR && cd $TARGET_DIR && sudo -n /usr/local/bin/docker compose up -d --build" echo "部署完成(仅代码)"