CI: bygg på valfri arkitektur — brasse-linux01 primär, Pi5 fallback
Some checks failed
release / build-release (push) Has been cancelled
Some checks failed
release / build-release (push) Has been cancelled
- aapt2-hantering villkorad på uname -m (arm64 = statisk binär, x86_64 = Googles ur build-tools), AAPT2_BIN via GITHUB_ENV - gradle-strypningen (workers=2 + nice) bara på arm64 — Pi5:n orkar inte längre APK-bygget med alla tjänster igång (två OOM-krascher 2026-08-23/24) - Release-uppladdningen provar gitea-d (Pi:ns dockernät) och faller tillbaka på publika API-URL:en så steget funkar från båda noderna Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2GA94E1f3cmrvdQLQhYdg
This commit is contained in:
@@ -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 <<EOF
|
||||
|
||||
Reference in New Issue
Block a user