Phases 1-5 of the Identity Architecture rollout are on master; Phase 6 (rotating DM IDs) is deferred. This bumps the protocol-breaking release: v0.5 and v0.6 cannot interoperate. Packaging: - Cargo + tauri.conf: 0.5.3 -> 0.6.0 - deploy.sh: drop -beta filename suffix - download.html: single v0.6.0 section with fork notice at the top; changelog entry summarising the five phases and the schema migration; Phase 6's rotating-DM-ID status noted as deferred Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
81 lines
2.8 KiB
Bash
81 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# Full build + deploy: AppImage, APK, CLI, website, anchor
|
|
# Usage: ./deploy.sh
|
|
# Requires: cargo, cargo-tauri, Android SDK, sshpass
|
|
set -e
|
|
|
|
# Load credentials from .deploy-creds (not in git)
|
|
if [ -f .deploy-creds ]; then
|
|
source .deploy-creds
|
|
else
|
|
echo "ERROR: .deploy-creds not found. Create it with:"
|
|
echo ' SSH_PASS="your-ssh-password"'
|
|
echo ' KS_PASS="your-keystore-password"'
|
|
exit 1
|
|
fi
|
|
SSH_HOST="itsgoin@itsgoin.com"
|
|
SSH_OPTS="-o StrictHostKeyChecking=no"
|
|
KEYSTORE="itsgoin.keystore"
|
|
KS_ALIAS="itsgoin"
|
|
|
|
VERSION=$(grep '"version"' crates/tauri-app/tauri.conf.json | head -1 | sed 's/.*"\([0-9.]*\)".*/\1/')
|
|
echo "=== Deploying v${VERSION} ==="
|
|
|
|
# Build CLI
|
|
echo "=== Building CLI ==="
|
|
cargo build -p itsgoin-cli --release &
|
|
CLI_PID=$!
|
|
|
|
# Build APK
|
|
echo "=== Building APK ==="
|
|
cargo tauri android build --apk &
|
|
APK_PID=$!
|
|
|
|
# Build AppImage (includes GStreamer patch)
|
|
echo "=== Building AppImage ==="
|
|
./build-appimage.sh
|
|
wait $CLI_PID
|
|
echo "=== CLI build complete ==="
|
|
wait $APK_PID
|
|
echo "=== APK build complete ==="
|
|
|
|
# Sign APK
|
|
echo "=== Signing APK ==="
|
|
UNSIGNED="crates/tauri-app/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk"
|
|
ALIGNED="itsgoin-aligned.apk"
|
|
SIGNED="itsgoin-${VERSION}.apk"
|
|
ZIPALIGN=$(find ~/Android/Sdk/build-tools -name "zipalign" 2>/dev/null | sort -V | tail -1)
|
|
APKSIGNER=$(find ~/Android/Sdk/build-tools -name "apksigner" 2>/dev/null | sort -V | tail -1)
|
|
"$ZIPALIGN" -f 4 "$UNSIGNED" "$ALIGNED"
|
|
"$APKSIGNER" sign --ks "$KEYSTORE" --ks-pass "pass:$KS_PASS" --ks-key-alias "$KS_ALIAS" --out "$SIGNED" "$ALIGNED"
|
|
echo "Signed: $SIGNED"
|
|
|
|
# Upload (sequential to avoid SSH rate limiting)
|
|
echo "=== Uploading website ==="
|
|
sshpass -p "$SSH_PASS" scp $SSH_OPTS website/*.html website/style.css "$SSH_HOST:~/public_html/"
|
|
sleep 5
|
|
|
|
echo "=== Uploading AppImage ==="
|
|
sshpass -p "$SSH_PASS" scp $SSH_OPTS "target/release/bundle/appimage/itsgoin_${VERSION}_amd64.AppImage" "$SSH_HOST:~/public_html/itsgoin_${VERSION}_amd64.AppImage"
|
|
sleep 5
|
|
|
|
echo "=== Uploading APK ==="
|
|
sshpass -p "$SSH_PASS" scp $SSH_OPTS "$SIGNED" "$SSH_HOST:~/public_html/"
|
|
sleep 5
|
|
|
|
echo "=== Uploading CLI ==="
|
|
sshpass -p "$SSH_PASS" scp $SSH_OPTS target/release/itsgoin "$SSH_HOST:~/public_html/itsgoin-cli-${VERSION}-linux-amd64"
|
|
sleep 5
|
|
|
|
echo "=== Uploading anchor binary ==="
|
|
sshpass -p "$SSH_PASS" scp $SSH_OPTS target/release/itsgoin "$SSH_HOST:~/bin/itsgoin.new"
|
|
sleep 5
|
|
|
|
echo "=== Swapping anchor ==="
|
|
sshpass -p "$SSH_PASS" ssh $SSH_OPTS "$SSH_HOST" 'kill $(cat ~/itsgoin-anchor.pid 2>/dev/null) 2>/dev/null; sleep 1; mv ~/bin/itsgoin.new ~/bin/itsgoin && chmod +x ~/bin/itsgoin && bash ~/bin/start-anchor.sh'
|
|
sleep 2
|
|
|
|
echo "=== Verifying anchor ==="
|
|
sshpass -p "$SSH_PASS" ssh $SSH_OPTS "$SSH_HOST" 'ps aux | grep "[i]tsgoin.*daemon"'
|
|
|
|
echo "=== Deploy complete: v${VERSION} ==="
|