From c9477b562ea0e3ffcfde9d34be78db6e261b854a Mon Sep 17 00:00:00 2001 From: "jif2.zhang" Date: Tue, 27 Oct 2026 08:09:00 +0800 Subject: [PATCH] =?UTF-8?q?ci(ota):=20=E6=96=B0=E5=A2=9E=20OTA=20=E5=8C=85?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=AD=A5=E9=AA=A4=20=E2=80=94=E2=80=94=20?= =?UTF-8?q?=E7=94=A8=20docker=20cp=20=E7=BB=8F=20bind-mount=20=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E5=86=99=E5=85=A5=E5=AE=BF=E4=B8=BB=20data/ota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/docker-build.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 1fd57c2..5ce7567 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -101,6 +101,24 @@ jobs: echo "===== bundle sha256 =====" sha256sum ota-package/iboard-ota.tar.gz + - name: Publish OTA package to server + # CI 跑在容器内, 无法直接写宿主文件系统; 用 docker cp 经bind-mount容器 + # 把 ota-package 落到宿主 /app/iboard-prod/data/ota + # (该目录被生产 app 容器挂载为 /app/ota-package)。 + # docker 不可用或目录缺失时仅告警, 不影响发布。 + run: | + set -euo pipefail + HOST_DIR=/app/iboard-prod + if ! docker info >/dev/null 2>&1; then + echo "::warning::docker 不可用, 跳过 OTA 包同步"; exit 0 + fi + docker run -d --name ota-bridge -v "${HOST_DIR}/data/ota:/dst" alpine:3.20 sleep 30 >/dev/null + docker cp ota-package/. ota-bridge:/dst/ || echo "::warning::OTA 包复制失败" + docker rm -f ota-bridge >/dev/null 2>&1 || true + echo "== 宿主 OTA 目录 ==" + docker run --rm -v "${HOST_DIR}/data/ota:/d" alpine:3.20 sh -c 'ls -la /d | head -6' + docker restart iboard-prod-app-1 >/dev/null 2>&1 || true + - name: Build Docker image # DATABASE_URL 仅在 prisma generate 阶段需要, 可用任何合法占位串 # PREBUILT_DIST=true: 复用上一步构建好的 dist/, 镜像内跳过前端构建