diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 28bdf06..21f9c77 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,14 +1,17 @@ name: deploy-digital-me -# 推送到 main → 自动同步代码到 NAS、重新构建并重启容器 +# push 到 main → 只同步「代码 / 逻辑」,图片·音频·字体等素材留在 NAS 上不重复传。 # 目标:http://192.168.110.4:8090 -# -# 说明:本工作流不使用任何外部 action(如 actions/checkout), -# 直接用 Gitea 内置地址 clone,避免因访问 github.com 不稳定而失败。 +# 改了素材(图片/音乐/字体)请手动运行 Sync Assets 工作流做一次全量同步。 on: push: branches: [main] + paths-ignore: + - '战役素材/**' + - '水墨遮罩/**' + - '客户成片/**' + - 'artifacts/**' workflow_dispatch: {} jobs: @@ -18,6 +21,8 @@ jobs: 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: | @@ -25,29 +30,29 @@ jobs: git config --global --add safe.directory '*' git clone --depth 1 "${GITEA_URL}/${REPO_PATH}.git" . - - name: 拉取 Git LFS 大文件 + - name: 只拉可能随代码变化的 LFS 产物 run: | set -e apt-get update -qq apt-get install -y -qq git-lfs git lfs install - git lfs pull + # 只拉 *.bundle.js 这类代码产物;图片/音频/字体不拉 + git lfs pull --include='*.bundle.js' || true - - name: 同步到 NAS 并重建容器 + - name: 同步代码到 NAS 并重建(媒体素材不动) run: | set -e - export TARGET_DIR=/volume1/docker/digital-me tar czf - \ --exclude=.git \ - --exclude='战役素材' \ - --exclude='水墨遮罩' \ - --exclude='客户成片' \ - --exclude='artifacts' \ + --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 \ - 18702851751@192.168.110.4 \ + -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 "部署完成" + echo "部署完成(仅代码)" diff --git a/.gitea/workflows/sync-assets.yml b/.gitea/workflows/sync-assets.yml new file mode 100644 index 0000000..79c55db --- /dev/null +++ b/.gitea/workflows/sync-assets.yml @@ -0,0 +1,47 @@ +name: sync-assets + +# 手动触发:全量同步(含图片 / 音频 / 字体等素材)。 +# 平时 push 只同步代码;改了素材后用这个跑一次。 + +on: + workflow_dispatch: {} + +jobs: + sync: + 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: 拉取代码 + 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 + git lfs pull + + - name: 全量同步到 NAS 并重建 + run: | + set -e + tar czf - \ + --exclude=.git \ + --exclude='战役素材' \ + --exclude='水墨遮罩' \ + --exclude='客户成片' \ + --exclude='artifacts' \ + 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 "全量同步完成"