#!/usr/bin/env bash # 把 APK 上传到 Cloudflare R2 (公开桶) via wrangler # 用法: bash scripts/upload-r2.sh [OBJECT_KEY] # # 依赖环境变量 (通常来自配置注册中心 CommonExternalService / cloudflare): # CF_API_TOKEN Cloudflare API token (r2/CF_API_TOKEN), wrangler 会从 token 自动解析账号 ID # CF_R2_BUCKET (可选, 默认 store) # CF_R2_PUBLIC_URL (可选, 默认 pub-98ee77ce79984c2cad0dc1c300901158.r2.dev, 仅用于打印下载地址) # # 说明: 与 kit 项目一致, 固定路径覆盖式上传, 保证有一个稳定的"最新"下载地址。 set -euo pipefail APK_PATH="${1:?用法: bash scripts/upload-r2.sh [OBJECT_KEY]}" OBJECT_KEY="${2:-data/android/$(basename "$APK_PATH")}" : "${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 echo "上传到 R2: ${BUCKET}/${OBJECT_KEY}" wrangler r2 object put "${BUCKET}/${OBJECT_KEY}" \ --file "$APK_PATH" \ --content-type application/vnd.android.package-archive \ --remote echo "已上传." echo "公共下载地址: ${CF_R2_PUBLIC_URL}/${OBJECT_KEY}"