fix: upload script only sync release apk

This commit is contained in:
JOJO 2026-04-07 13:12:24 +08:00
parent 67db1ea831
commit e804ef52d2

View File

@ -3,7 +3,6 @@ set -euo pipefail
# 专用:上传本地 APK 到服务器,覆盖 # 专用:上传本地 APK 到服务器,覆盖
# /opt/agent/agents/android-webview-app/app/release/app-release.apk # /opt/agent/agents/android-webview-app/app/release/app-release.apk
# 并同步版本元数据build.gradle.kts + APP_CHANGELOG.md
# 支持命令行自动打包assembleRelease+ 上传 # 支持命令行自动打包assembleRelease+ 上传
# ===== 可按需覆盖(环境变量优先)===== # ===== 可按需覆盖(环境变量优先)=====
@ -11,15 +10,11 @@ REMOTE_HOST="${REMOTE_HOST:-59.110.19.30}"
REMOTE_USER="${REMOTE_USER:-root}" REMOTE_USER="${REMOTE_USER:-root}"
REMOTE_PORT="${REMOTE_PORT:-22}" REMOTE_PORT="${REMOTE_PORT:-22}"
REMOTE_APK_PATH="${REMOTE_APK_PATH:-/opt/agent/agents/android-webview-app/app/release/app-release.apk}" REMOTE_APK_PATH="${REMOTE_APK_PATH:-/opt/agent/agents/android-webview-app/app/release/app-release.apk}"
REMOTE_GRADLE_PATH="${REMOTE_GRADLE_PATH:-/opt/agent/agents/android-webview-app/app/build.gradle.kts}"
REMOTE_CHANGELOG_PATH="${REMOTE_CHANGELOG_PATH:-/opt/agent/agents/android-webview-app/APP_CHANGELOG.md}"
REMOTE_PASS="${REMOTE_PASS:-}" REMOTE_PASS="${REMOTE_PASS:-}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ANDROID_APP_DIR="${ANDROID_APP_DIR:-$SCRIPT_DIR/android-webview-app}" ANDROID_APP_DIR="${ANDROID_APP_DIR:-$SCRIPT_DIR/android-webview-app}"
LOCAL_APK_PATH="${LOCAL_APK_PATH:-}" LOCAL_APK_PATH="${LOCAL_APK_PATH:-}"
LOCAL_GRADLE_PATH="${LOCAL_GRADLE_PATH:-$SCRIPT_DIR/android-webview-app/app/build.gradle.kts}"
LOCAL_CHANGELOG_PATH="${LOCAL_CHANGELOG_PATH:-$SCRIPT_DIR/android-webview-app/APP_CHANGELOG.md}"
BUILD_APK="${BUILD_APK:-1}" # 1=先打包再上传0=仅上传 BUILD_APK="${BUILD_APK:-1}" # 1=先打包再上传0=仅上传
SSH_OPTS=( SSH_OPTS=(
@ -76,61 +71,44 @@ main() {
echo "或指定现成包: BUILD_APK=0 LOCAL_APK_PATH=/your/app-release.apk bash upload_android_apk.sh" echo "或指定现成包: BUILD_APK=0 LOCAL_APK_PATH=/your/app-release.apk bash upload_android_apk.sh"
exit 1 exit 1
fi fi
if [[ ! -f "$LOCAL_GRADLE_PATH" ]]; then
echo "本地版本文件不存在: $LOCAL_GRADLE_PATH"
exit 1
fi
if [[ ! -f "$LOCAL_CHANGELOG_PATH" ]]; then
echo "本地更新说明不存在: $LOCAL_CHANGELOG_PATH"
exit 1
fi
log "本地 APK: $LOCAL_APK_PATH" log "本地 APK: $LOCAL_APK_PATH"
if [[ "$LOCAL_APK_PATH" == *"-unsigned.apk" ]]; then if [[ "$LOCAL_APK_PATH" == *"-unsigned.apk" ]]; then
log "错误:当前是 unsigned APK无法用于覆盖安装更新。请先配置签名后重新打包。" log "错误:当前是 unsigned APK无法用于覆盖安装更新。请先配置签名后重新打包。"
log "需要环境变量ANDROID_KEYSTORE_PATH / ANDROID_KEYSTORE_PASSWORD / ANDROID_KEY_ALIAS / ANDROID_KEY_PASSWORD" log "需要环境变量ANDROID_KEYSTORE_PATH / ANDROID_KEYSTORE_PASSWORD / ANDROID_KEY_ALIAS / ANDROID_KEY_PASSWORD"
exit 1 exit 1
fi fi
log "本地版本文件: $LOCAL_GRADLE_PATH"
log "本地更新说明: $LOCAL_CHANGELOG_PATH"
log "目标服务器: $REMOTE_USER@$REMOTE_HOST:$REMOTE_APK_PATH" log "目标服务器: $REMOTE_USER@$REMOTE_HOST:$REMOTE_APK_PATH"
local remote_apk_dir remote_gradle_dir remote_changelog_dir local remote_apk_dir
remote_apk_dir="$(dirname "$REMOTE_APK_PATH")" remote_apk_dir="$(dirname "$REMOTE_APK_PATH")"
remote_gradle_dir="$(dirname "$REMOTE_GRADLE_PATH")"
remote_changelog_dir="$(dirname "$REMOTE_CHANGELOG_PATH")"
if [[ -n "$REMOTE_PASS" ]]; then if [[ -n "$REMOTE_PASS" ]]; then
need_cmd sshpass need_cmd sshpass
log "创建远程目录: $remote_apk_dir / $remote_gradle_dir / $remote_changelog_dir" log "创建远程目录: $remote_apk_dir"
sshpass -p "$REMOTE_PASS" ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \ sshpass -p "$REMOTE_PASS" ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \
"mkdir -p '$remote_apk_dir' '$remote_gradle_dir' '$remote_changelog_dir'" "mkdir -p '$remote_apk_dir'"
log "上传并覆盖 APK + 版本元数据" log "上传并覆盖 APK"
sshpass -p "$REMOTE_PASS" scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_APK_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_APK_PATH" sshpass -p "$REMOTE_PASS" scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_APK_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_APK_PATH"
sshpass -p "$REMOTE_PASS" scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_GRADLE_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_GRADLE_PATH"
sshpass -p "$REMOTE_PASS" scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_CHANGELOG_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_CHANGELOG_PATH"
log "远程文件检查" log "远程文件检查"
sshpass -p "$REMOTE_PASS" ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \ sshpass -p "$REMOTE_PASS" ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \
"ls -lh '$REMOTE_APK_PATH' '$REMOTE_GRADLE_PATH' '$REMOTE_CHANGELOG_PATH'" "ls -lh '$REMOTE_APK_PATH'"
else else
log "使用 SSH Key 模式(未提供 REMOTE_PASS" log "使用 SSH Key 模式(未提供 REMOTE_PASS"
log "创建远程目录: $remote_apk_dir / $remote_gradle_dir / $remote_changelog_dir" log "创建远程目录: $remote_apk_dir"
ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \ ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \
"mkdir -p '$remote_apk_dir' '$remote_gradle_dir' '$remote_changelog_dir'" "mkdir -p '$remote_apk_dir'"
log "上传并覆盖 APK + 版本元数据" log "上传并覆盖 APK"
scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_APK_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_APK_PATH" scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_APK_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_APK_PATH"
scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_GRADLE_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_GRADLE_PATH"
scp -P "$REMOTE_PORT" "${SSH_OPTS[@]}" "$LOCAL_CHANGELOG_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_CHANGELOG_PATH"
log "远程文件检查" log "远程文件检查"
ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \ ssh -p "$REMOTE_PORT" "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \
"ls -lh '$REMOTE_APK_PATH' '$REMOTE_GRADLE_PATH' '$REMOTE_CHANGELOG_PATH'" "ls -lh '$REMOTE_APK_PATH'"
fi fi
log "完成:服务器 APK 与版本信息已更新" log "完成:服务器 APK 已更新"
} }
main "$@" main "$@"