Some checks failed
Build & Deploy APK / build (push) Failing after 36s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
68 lines
2.5 KiB
YAML
68 lines
2.5 KiB
YAML
name: Build & Deploy APK
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
run: |
|
|
git clone --depth 1 --branch "${GITHUB_REF_NAME}" \
|
|
"http://admin:${{ secrets.GITHUB_TOKEN }}@192.168.5.10:3000/${GITHUB_REPOSITORY}.git" .
|
|
|
|
- name: Validate environment
|
|
run: |
|
|
echo "Java: $(java --version 2>&1 | head -1)"
|
|
echo "ANDROID_HOME: $ANDROID_HOME"
|
|
test -n "$ANDROID_HOME" || { echo "ERROR: ANDROID_HOME not set"; exit 1; }
|
|
ls "$ANDROID_HOME/platforms" > /dev/null 2>&1 || echo "WARNING: Cannot list ANDROID_HOME (permissions?), build may still work via gradle"
|
|
|
|
- name: Build Release APK
|
|
shell: bash
|
|
run: |
|
|
GRADLE_PROPS="gradle/wrapper/gradle-wrapper.properties"
|
|
DIST_URL=$(grep distributionUrl "$GRADLE_PROPS" | cut -d'=' -f2 | sed 's/\\//g')
|
|
GRADLE_DIR="$HOME/.gradle/wrapper/dists/gradle-8.11.1-bin"
|
|
|
|
if [ ! -d "$GRADLE_DIR" ]; then
|
|
mkdir -p /tmp/gradle-download
|
|
wget -q "$DIST_URL" -O /tmp/gradle-download/gradle.zip
|
|
mkdir -p "$GRADLE_DIR"
|
|
unzip -qo /tmp/gradle-download/gradle.zip -d "$GRADLE_DIR"
|
|
rm /tmp/gradle-download/gradle.zip
|
|
fi
|
|
|
|
GRADLE_BIN=$(find "$GRADLE_DIR" -name "gradle" -path "*/bin/gradle" | head -1)
|
|
echo "Using Gradle: $GRADLE_BIN"
|
|
"$GRADLE_BIN" assembleRelease --no-daemon
|
|
|
|
- name: Deploy APK & update version
|
|
run: |
|
|
STORAGE="/home/user/itstransport/backend/storage/app/android"
|
|
|
|
VERSION_NAME=$(grep 'versionName' app/build.gradle.kts | head -1 | sed 's/.*"\(.*\)".*/\1/')
|
|
VERSION_CODE=$(grep 'versionCode' app/build.gradle.kts | head -1 | sed 's/[^0-9]*//g')
|
|
|
|
APK=$(find app/build/outputs/apk/release -name "*.apk" | head -1)
|
|
test -n "$APK" || { echo "ERROR: No APK found"; exit 1; }
|
|
|
|
cp "$APK" "$STORAGE/app-release.apk"
|
|
|
|
COMMIT_MSG=$(git log -1 --pretty=%s | sed 's/"/\\"/g')
|
|
python3 -c "
|
|
import json
|
|
data = {
|
|
'versionName': '$VERSION_NAME',
|
|
'versionCode': int('$VERSION_CODE'),
|
|
'releaseNotes': \"$COMMIT_MSG\"
|
|
}
|
|
with open('$STORAGE/version.json', 'w') as f:
|
|
json.dump(data, f, indent=4, ensure_ascii=False)
|
|
f.write('\n')
|
|
"
|
|
|
|
echo "Deployed v${VERSION_NAME} (code ${VERSION_CODE}) — $(du -h "$STORAGE/app-release.apk" | cut -f1)"
|