Modules/Sketch2D/temp/publish-sketch2d.sh
Шурупов Илья Викторович 4fb9a9e91c tmp
2026-10-19 17:42:16 +03:00

50 lines
2.1 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
HERE=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
REPO=$(cd "$HERE/../.." && pwd)
SERVER="auser@ilusha-basic.online"
SSH_PORT=2233
REMOTE_DIR=/srv/sketch2d
PUBLIC_URL=https://ilusha-basic.online/sketch2d
STATE=$HOME/.sketch2d-release/last-published
HISTORY=$HOME/.sketch2d-release/history.json
ABIS="${SKETCH2D_ABIS:-arm64-v8a,x86_64}"
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk ANDROID_HOME=$HOME/Android/Sdk
cd "$REPO"
COUNT=$(git rev-list --count HEAD)
HASH=$(git rev-parse --short HEAD)
NAME="sketch2d-$COUNT-$HASH.apk"
(cd android && ./gradlew --no-daemon -q assembleRelease -Psketch2dAbis="$ABIS" > /tmp/sketch2d-apk-release.log 2>&1)
APK=android/app/build/outputs/apk/release/app-release.apk
SHA=$(sha256sum "$APK" | cut -d' ' -f1)
SIZE=$(stat -c %s "$APK")
PREVIOUS=$(cat "$STATE" 2>/dev/null || true)
if [ -n "$PREVIOUS" ] && git cat-file -e "$PREVIOUS" 2>/dev/null; then
RANGE="$PREVIOUS..HEAD"
else
RANGE="-15"
fi
CHANGELOG=$(git log --no-merges --format='- %s' $RANGE | head -40)
[ -n "$CHANGELOG" ] || CHANGELOG="- Maintenance build"
if [ ! -f "$HISTORY" ]; then
git log --no-merges --format='%H' -60 HEAD~1 | while read -r commit; do
printf '%s\t%s\t%s\n' "$(git rev-list --count "$commit")" "$(git rev-parse --short "$commit")" "$(git log -1 --format=%s "$commit")"
done | python3 "$HERE/release-history.py" seed > "$HISTORY"
fi
python3 "$HERE/release-history.py" manifest "$COUNT" "$HASH" "$PUBLIC_URL/$NAME" "$SHA" "$SIZE" "$CHANGELOG" "$HISTORY" > /tmp/sketch2d-latest.json
scp -q -P $SSH_PORT "$APK" "$SERVER:$REMOTE_DIR/$NAME.part"
ssh -p $SSH_PORT "$SERVER" "mv '$REMOTE_DIR/$NAME.part' '$REMOTE_DIR/$NAME'"
scp -q -P $SSH_PORT /tmp/sketch2d-latest.json "$SERVER:$REMOTE_DIR/latest.json.part"
ssh -p $SSH_PORT "$SERVER" "mv '$REMOTE_DIR/latest.json.part' '$REMOTE_DIR/latest.json'; ls -1t $REMOTE_DIR/sketch2d-*.apk | tail -n +6 | xargs -r rm -f"
REMOTE_SHA=$(curl -s -m 600 "$PUBLIC_URL/$NAME" | sha256sum | cut -d' ' -f1)
[ "$REMOTE_SHA" = "$SHA" ] || { echo "published APK checksum mismatch" >&2; exit 1; }
git rev-parse HEAD > "$STATE"
mv "$HISTORY.next" "$HISTORY"
echo "published $NAME versionCode $COUNT sha256 $SHA"