fix: upload persistent keystores instead of generating per-build
Some checks failed
Mirror to GitHub / mirror (push) Failing after 35s
Build Release Binaries / build-amd64 (push) Failing after 3m38s

Keystores are saved in android/keystore/ (gitignored) and uploaded
to the build VM. No more signature mismatches between builds.
Rsync excludes keystore dir to prevent --delete from removing them.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-04-07 06:23:38 +04:00
parent e9e0d8d212
commit b82ce399d8

View File

@@ -184,6 +184,7 @@ do_upload() {
--exclude='node_modules' \ --exclude='node_modules' \
--exclude='dist' \ --exclude='dist' \
--exclude='desktop/src-tauri/gen' \ --exclude='desktop/src-tauri/gen' \
--exclude='android/keystore/*.jks' \
-e "ssh $SSH_OPTS -i $SSH_KEY_PATH" \ -e "ssh $SSH_OPTS -i $SSH_KEY_PATH" \
"$PROJECT_DIR/" "$REMOTE_USER@$ip:/root/wzp-build/" "$PROJECT_DIR/" "$REMOTE_USER@$ip:/root/wzp-build/"
echo " Source uploaded." echo " Source uploaded."
@@ -220,14 +221,31 @@ do_build() {
so_size=$(ssh_cmd "du -h /root/wzp-build/android/app/src/main/jniLibs/arm64-v8a/libwzp_android.so | cut -f1") so_size=$(ssh_cmd "du -h /root/wzp-build/android/app/src/main/jniLibs/arm64-v8a/libwzp_android.so | cut -f1")
echo " .so: $so_size" echo " .so: $so_size"
# Generate debug keystore if missing # Upload keystores from repo (consistent signing across builds)
local ip2
ip2=$(get_vm_ip)
ssh_cmd "mkdir -p /root/wzp-build/android/keystore"
if [ -f "$PROJECT_DIR/android/keystore/wzp-debug.jks" ]; then
scp $SSH_OPTS -i "$SSH_KEY_PATH" \
"$PROJECT_DIR/android/keystore/wzp-debug.jks" \
"$PROJECT_DIR/android/keystore/wzp-release.jks" \
"$REMOTE_USER@$ip2:/root/wzp-build/android/keystore/" 2>/dev/null
echo " Keystores uploaded."
else
# Fallback: generate if not in repo
ssh_cmd "[ -f /root/wzp-build/android/keystore/wzp-debug.jks ] || \ ssh_cmd "[ -f /root/wzp-build/android/keystore/wzp-debug.jks ] || \
(mkdir -p /root/wzp-build/android/keystore && \
keytool -genkey -v \ keytool -genkey -v \
-keystore /root/wzp-build/android/keystore/wzp-debug.jks \ -keystore /root/wzp-build/android/keystore/wzp-debug.jks \
-keyalg RSA -keysize 2048 -validity 10000 \ -keyalg RSA -keysize 2048 -validity 10000 \
-alias wzp-debug -storepass android -keypass android \ -alias wzp-debug -storepass android -keypass android \
-dname 'CN=WZP Debug' > /dev/null 2>&1)" -dname 'CN=WZP Debug' > /dev/null 2>&1"
ssh_cmd "[ -f /root/wzp-build/android/keystore/wzp-release.jks ] || \
keytool -genkey -v \
-keystore /root/wzp-build/android/keystore/wzp-release.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias wzp-release -storepass wzphone2024 -keypass wzphone2024 \
-dname 'CN=WZP Release' > /dev/null 2>&1"
fi
# Build debug APK # Build debug APK
log "Building debug APK..." log "Building debug APK..."
@@ -238,10 +256,8 @@ do_build() {
./gradlew assembleDebug --no-daemon --warning-mode=none 2>&1" | tail -3 \ ./gradlew assembleDebug --no-daemon --warning-mode=none 2>&1" | tail -3 \
|| die "Debug APK build failed" || die "Debug APK build failed"
# Build release APK (uses debug keystore for now) # Build release APK
log "Building release APK..." log "Building release APK..."
# Copy debug keystore as release keystore (same password in build.gradle)
ssh_cmd "cp /root/wzp-build/android/keystore/wzp-debug.jks /root/wzp-build/android/keystore/wzp-release.jks 2>/dev/null; true"
ssh_cmd "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 && \ ssh_cmd "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 && \
export ANDROID_HOME=\$HOME/android-sdk && \ export ANDROID_HOME=\$HOME/android-sdk && \
cd /root/wzp-build/android && \ cd /root/wzp-build/android && \