ci(ota): 新增 OTA 包同步步骤 —— 用 docker cp 经 bind-mount 容器写入宿主 data/ota
Docker Build and Push / build-image (push) Successful in 1m27s
Docker Build and Push / build-image (push) Successful in 1m27s
This commit is contained in:
@@ -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/, 镜像内跳过前端构建
|
||||
|
||||
Reference in New Issue
Block a user