diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 4ecb6a5..c63369f 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -3,10 +3,11 @@ name: release # På varje push till main: bygg signerad release-APK och lägg den på en # rullande "latest"-release på släppsidan i Gitea. # -# Runnern är Pi5 (arm64). Googles aapt2 finns bara för linux x86_64, därför -# används en statiskt byggd arm64-aapt2 (lzhiyong/android-sdk-tools) via -# gradle-flaggan android.aapt2FromMavenOverride. Resten av Android-bygget -# (kotlinc, d8, apksigner) är JVM-baserat och kör fint på arm64. +# Kör på valfri runner: brasse-linux01 (x86_64, primär — Pi5:n orkar inte +# APK-bygget längre) eller Pi5 (arm64, fallback när huvuddatorn är av). +# På arm64 används en statiskt byggd aapt2 (lzhiyong/android-sdk-tools) — +# Googles aapt2 finns bara för linux x86_64. Resten av Android-bygget är +# JVM-baserat och arkitekturoberoende. on: push: branches: [main] @@ -52,7 +53,7 @@ jobs: key: gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} restore-keys: gradle- - - name: Installera JDK 17 + Android SDK (arm64) + - name: Installera JDK 17 + Android SDK run: | set -e echo "== apt: JDK 17 + verktyg ==" @@ -70,11 +71,17 @@ jobs: (yes || true) | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null echo "== installerar platform-35 + build-tools ==" "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "platforms;android-35" "build-tools;34.0.0" > /dev/null - echo "== hämtar arm64-aapt2 (Googles är x86_64-only) ==" - mkdir -p "$HOME/ci-tools" - wget -nv "$AAPT2_ARM64_URL" -O /tmp/sdk-tools-arm64.zip - unzip -qo /tmp/sdk-tools-arm64.zip -d "$HOME/ci-tools" - chmod +x "$HOME/ci-tools/build-tools/aapt2" + if [ "$(uname -m)" = "aarch64" ]; then + echo "== arm64: statisk aapt2 (Googles är x86_64-only) ==" + mkdir -p "$HOME/ci-tools" + wget -nv "$AAPT2_ARM64_URL" -O /tmp/sdk-tools-arm64.zip + unzip -qo /tmp/sdk-tools-arm64.zip -d "$HOME/ci-tools" + chmod +x "$HOME/ci-tools/build-tools/aapt2" + echo "AAPT2_BIN=$HOME/ci-tools/build-tools/aapt2" >> "$GITHUB_ENV" + else + echo "== x86_64: Googles aapt2 ur build-tools ==" + echo "AAPT2_BIN=$ANDROID_HOME/build-tools/34.0.0/aapt2" >> "$GITHUB_ENV" + fi echo "ANDROID_HOME=$ANDROID_HOME" >> "$GITHUB_ENV" echo "== SDK-setup klar ==" @@ -82,16 +89,20 @@ jobs: run: | set -e export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) - # Snäll mot Pi5:n — begränsa gradles parallellism - nice -n 10 ./gradlew --no-daemon --console=plain \ - -Dorg.gradle.workers.max=2 \ - -Pandroid.aapt2FromMavenOverride="$HOME/ci-tools/build-tools/aapt2" \ - :app:assembleRelease + if [ "$(uname -m)" = "aarch64" ]; then + # Snäll mot Pi5:n — begränsad parallellism + arm64-aapt2 + nice -n 10 ./gradlew --no-daemon --console=plain \ + -Dorg.gradle.workers.max=2 \ + -Pandroid.aapt2FromMavenOverride="$AAPT2_BIN" \ + :app:assembleRelease + else + ./gradlew --no-daemon --console=plain :app:assembleRelease + fi mkdir -p build cp app/build/outputs/apk/release/app-release.apk build/FitnessDroid.apk (cd build && sha256sum FitnessDroid.apk > checksums.txt && ls -la) # version.json för appens inbyggda uppdateringskoll - VN=$("$HOME/ci-tools/build-tools/aapt2" dump badging build/FitnessDroid.apk \ + VN=$("$AAPT2_BIN" dump badging build/FitnessDroid.apk \ | sed -n "s/.*versionName='\([^']*\)'.*/\1/p" | head -1) SHA=$(cut -d' ' -f1 build/checksums.txt) jq -n \ @@ -105,11 +116,17 @@ jobs: - name: Skapa/uppdatera latest-release + ladda upp APK env: - API: http://gitea-d:3000/api/v1 REPO: ${{ github.repository }} TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | set -e + # gitea-d finns bara på Pi5:ns dockernät; annars publika URL:en + if curl -s -m 3 "http://gitea-d:3000/api/v1/version" -o /dev/null 2>/dev/null; then + API="http://gitea-d:3000/api/v1" + else + API="https://gitea.brasse-pc.eu/api/v1" + fi + echo "API: $API" TAG="latest" BASE="https://gitea.brasse-pc.eu/$REPO/releases/download/$TAG" BODY=$(cat <