ci(ota): 新增 OTA 包同步步骤 —— 用 docker cp 经 bind-mount 容器写入宿主 data/ota
Docker Build and Push / build-image (push) Successful in 1m27s

This commit is contained in:
jif2.zhang
2026-10-27 08:09:00 +08:00
parent 50283269fb
commit c9477b562e
+18
View File
@@ -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/, 镜像内跳过前端构建