Files
gemeindetrommler/.github/workflows/build-apk.yaml
T
Nizz05 a3323c8b2d
Build Android APK / Build Release APKs (push) Failing after 59s
fix(ci): track gradlew and wrapper jar, ensure executable permissions
2026-09-13 22:11:52 +02:00

88 lines
2.8 KiB
YAML

name: Build Android APK
on:
push:
branches:
- main
- master
- 'refactor/**'
tags:
- 'v*'
pull_request:
branches:
- main
- master
workflow_dispatch:
jobs:
build-android:
name: Build Release APKs
runs-on: ubuntu-latest
container:
image: ghcr.io/cirruslabs/flutter:3.19.3
steps:
- name: Setup Node.js 20 & Git for Actions
run: |
ARCH=$(uname -m)
if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then NODE_ARCH="arm64"; else NODE_ARCH="x64"; fi
curl -fsSL "https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-${NODE_ARCH}.tar.gz" | tar -xzf - -C /usr/local --strip-components=1
node --version
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git config --global --add safe.directory '*'
- name: Checkout Repository
uses: actions/checkout@v4
- name: Make Gradlew Executable
run: |
if [ -f android/gradlew ]; then
chmod +x android/gradlew
fi
- name: Inspect Build Environment
run: |
flutter --version
java -version
node --version
- name: Fetch Flutter Dependencies
run: flutter pub get
- name: Run Code Analysis & Tests
run: |
flutter analyze
flutter test
- name: Build Universal Release APK
run: flutter build apk --release
- name: Build Split-per-ABI Release APKs
run: flutter build apk --release --split-per-abi
- name: Organize Artifacts
run: |
mkdir -p release-apks
# Copy universal APK
if [ -f build/app/outputs/flutter-apk/app-release.apk ]; then
cp build/app/outputs/flutter-apk/app-release.apk release-apks/oggauer-gemeindetrommler-universal-release.apk
fi
# Copy split APKs
if [ -f build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ]; then
cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk release-apks/oggauer-gemeindetrommler-arm64-v8a.apk
fi
if [ -f build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk ]; then
cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk release-apks/oggauer-gemeindetrommler-armeabi-v7a.apk
fi
if [ -f build/app/outputs/flutter-apk/app-x86_64-release.apk ]; then
cp build/app/outputs/flutter-apk/app-x86_64-release.apk release-apks/oggauer-gemeindetrommler-x86_64.apk
fi
echo "=== Generated APK Artifacts ==="
ls -lah release-apks/
- name: Upload APKs to Gitea Artifacts
uses: actions/upload-artifact@v4
with:
name: oggauer-gemeindetrommler-apks
path: release-apks/*.apk
retention-days: 30