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 ====="
|
echo "===== bundle sha256 ====="
|
||||||
sha256sum ota-package/iboard-ota.tar.gz
|
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
|
- name: Build Docker image
|
||||||
# DATABASE_URL 仅在 prisma generate 阶段需要, 可用任何合法占位串
|
# DATABASE_URL 仅在 prisma generate 阶段需要, 可用任何合法占位串
|
||||||
# PREBUILT_DIST=true: 复用上一步构建好的 dist/, 镜像内跳过前端构建
|
# PREBUILT_DIST=true: 复用上一步构建好的 dist/, 镜像内跳过前端构建
|
||||||
|
|||||||
Reference in New Issue
Block a user