init: Wardrobe 衣物管理系统 - 项目首页、OTA 升级、Android CI/CD
- 响应式项目首页 (Landing, 含 R2 APK 下载) + 路由 /home 调整 - OTA 升级: tauri-plugin-hotswap (lib.rs/main.rs 拆分, 客户端热替换) - OTA 服务端 (check/bundle/manifest-web) + build-ota/genkey/upload 脚本 - 密钥/凭据统一存配置中心 (signing + ota + cloudflare 分组) - Android CI (android-* 分支) + OTA CI (手动触发), 产物上传 R2 - 修复 tsc/构建阻塞问题
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# 把 OTA 升级包 (bundle + latest.json) 上传到 Cloudflare R2 (公开桶, 前缀 store/ota/)
|
||||
# 用法: bash scripts/upload-ota-r2.sh <OTA_DIR>
|
||||
# 默认 <OTA_DIR> = ota-package
|
||||
# 说明:
|
||||
# - bundle 固定名 wardrobe-ota.tar.gz (与 build-ota.mjs 保持一致), 覆盖式上传
|
||||
# - latest.json 一并上传, 便于把 R2 作为 OTA 静态存储 (配合 OTA_PUBLIC_BASE 使用)
|
||||
#
|
||||
# 依赖环境变量 (通常来自配置注册中心 CommonExternalService / cloudflare):
|
||||
# CF_API_TOKEN Cloudflare API token (r2/CF_API_TOKEN)
|
||||
# CF_R2_BUCKET (可选, 默认 store)
|
||||
# CF_R2_PUBLIC_URL (可选; 若设置, 同时输出可直接给 OTA_PUBLIC_BASE 使用的下载地址)
|
||||
set -euo pipefail
|
||||
|
||||
OTA_DIR="${1:-ota-package}"
|
||||
BUNDLE="wardrobe-ota.tar.gz"
|
||||
HAS_BUNDLE=0
|
||||
[ -f "$OTA_DIR/$BUNDLE" ] && HAS_BUNDLE=1
|
||||
|
||||
: "${CF_API_TOKEN:?缺少 CF_API_TOKEN (注册中心 key: r2/CF_API_TOKEN)}"
|
||||
export CLOUDFLARE_API_TOKEN="$CF_API_TOKEN"
|
||||
|
||||
BUCKET="${CF_R2_BUCKET:-store}"
|
||||
CF_R2_PUBLIC_URL="${CF_R2_PUBLIC_URL:-https://pub-98ee77ce79984c2cad0dc1c300901158.r2.dev}"
|
||||
|
||||
if ! command -v wrangler >/dev/null 2>&1; then
|
||||
echo "安装 wrangler ..."
|
||||
npm i -g wrangler
|
||||
fi
|
||||
|
||||
if [ "$HAS_BUNDLE" = "1" ]; then
|
||||
echo "上传 ${BUCKET}/ota/${BUNDLE} ..."
|
||||
wrangler r2 object put "${BUCKET}/ota/${BUNDLE}" \
|
||||
--file "$OTA_DIR/$BUNDLE" \
|
||||
--content-type application/gzip \
|
||||
--remote
|
||||
fi
|
||||
|
||||
if [ -f "$OTA_DIR/latest.json" ]; then
|
||||
echo "上传 ${BUCKET}/ota/latest.json ..."
|
||||
wrangler r2 object put "${BUCKET}/ota/latest.json" \
|
||||
--file "$OTA_DIR/latest.json" \
|
||||
--content-type application/json \
|
||||
--remote
|
||||
fi
|
||||
|
||||
echo "已上传."
|
||||
echo "bundle 下载地址: ${CF_R2_PUBLIC_URL}/ota/${BUNDLE}"
|
||||
echo "可将 OTA_PUBLIC_BASE=${CF_R2_PUBLIC_URL} 传给赋予了 check 端点的 server, 让客户端直连 R2 下载 bundle."
|
||||
Reference in New Issue
Block a user