feat: 构建flutter 基座
This commit is contained in:
94
scripts/deploy-apk.sh
Executable file
94
scripts/deploy-apk.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
|
||||
APK_PATH="${APK_PATH:-$PROJECT_ROOT/build/app/outputs/flutter-apk/app-release.apk}"
|
||||
REMOTE_USER="${REMOTE_USER:-root}"
|
||||
REMOTE_HOST="${REMOTE_HOST:-54.116.29.247}"
|
||||
REMOTE_PORT="${REMOTE_PORT:-22}"
|
||||
REMOTE_DIR="${REMOTE_DIR:-/data/wwwroot/apk}"
|
||||
REMOTE_SCRIPT="${REMOTE_SCRIPT:-/data/wwwroot/apk/show_apk_link.sh}"
|
||||
SHOULD_BUILD=true
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: scripts/deploy-apk.sh [options]
|
||||
|
||||
Options:
|
||||
--skip-build Upload the existing APK without running flutter build.
|
||||
--apk PATH APK path to upload.
|
||||
--host HOST Remote host. Default: 54.116.29.247
|
||||
--user USER Remote user. Default: root
|
||||
--port PORT SSH port. Default: 22
|
||||
--remote-dir DIR Remote APK directory. Default: /data/wwwroot/apk
|
||||
--remote-script PATH Remote link script. Default: /data/wwwroot/apk/show_apk_link.sh
|
||||
-h, --help Show this help.
|
||||
|
||||
Environment variables with the same names are also supported:
|
||||
APK_PATH, REMOTE_USER, REMOTE_HOST, REMOTE_PORT, REMOTE_DIR, REMOTE_SCRIPT
|
||||
EOF
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--skip-build)
|
||||
SHOULD_BUILD=false
|
||||
shift
|
||||
;;
|
||||
--apk)
|
||||
APK_PATH="$2"
|
||||
shift 2
|
||||
;;
|
||||
--host)
|
||||
REMOTE_HOST="$2"
|
||||
shift 2
|
||||
;;
|
||||
--user)
|
||||
REMOTE_USER="$2"
|
||||
shift 2
|
||||
;;
|
||||
--port)
|
||||
REMOTE_PORT="$2"
|
||||
shift 2
|
||||
;;
|
||||
--remote-dir)
|
||||
REMOTE_DIR="$2"
|
||||
shift 2
|
||||
;;
|
||||
--remote-script)
|
||||
REMOTE_SCRIPT="$2"
|
||||
shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1" >&2
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$SHOULD_BUILD" == true ]]; then
|
||||
(cd "$PROJECT_ROOT" && flutter build apk --release)
|
||||
fi
|
||||
|
||||
if [[ ! -f "$APK_PATH" ]]; then
|
||||
echo "APK not found: $APK_PATH" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APK_NAME="$(basename "$APK_PATH")"
|
||||
REMOTE_TARGET="$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
||||
|
||||
echo "Uploading $APK_PATH to $REMOTE_TARGET"
|
||||
scp -P "$REMOTE_PORT" "$APK_PATH" "$REMOTE_TARGET"
|
||||
|
||||
echo "Generating APK link on $REMOTE_HOST"
|
||||
ssh -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" \
|
||||
"bash '$REMOTE_SCRIPT' '$APK_NAME'"
|
||||
Reference in New Issue
Block a user