From b9326632a0c301823509f73a1de8bcfab9e1f77b Mon Sep 17 00:00:00 2001 From: admin Date: Sat, 10 Oct 2026 16:39:40 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E9=83=A8=E7=BD=B2=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=A2=9E=E9=87=8F=E5=90=8C=E6=AD=A5=EF=BC=88=E5=AA=92=E4=BD=93?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E4=B8=8D=E9=87=8D=E5=A4=8D=E4=BC=A0=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=85=A8=E9=87=8F=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy.yml | 39 ++++++++++++++------------ .gitea/workflows/sync-assets.yml | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 17 deletions(-) create mode 100644 .gitea/workflows/sync-assets.yml 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 "全量同步完成"