Android app (WebView wrapper): - Wraps the public household sharing URL in a native Android app - Swipe-to-refresh, error handling, back navigation, settings dialog - User enters their household's public URL on first launch - Material Design with toolbar, progress indicator Build tooling: - build-apk.sh: one-command APK build (auto-installs Java, SDK, Gradle) - .gitignore updated for Android build artifacts CI (.gitea/workflows/ci.yml): - New 'build-android' job (needs test-and-package) - Installs Android SDK + Java 17, builds debug APK - Uploads APK as 'meal-tracker-apk' artifact
94 lines
2.7 KiB
YAML
94 lines
2.7 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
test-and-package:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.13"
|
|
|
|
- name: Install dependencies
|
|
run: pip install -r requirements.txt
|
|
|
|
- name: Run tests
|
|
run: python -m pytest tests/ -v
|
|
|
|
- name: Package artifact
|
|
run: |
|
|
zip -r meal-tracker.zip . \
|
|
-x ".git/*" \
|
|
-x ".gitea/*" \
|
|
-x ".env" \
|
|
-x "docker-compose.yml" \
|
|
-x ".pytest_cache/*" \
|
|
-x "__pycache__/*" \
|
|
-x "meals.db"
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: meal-tracker
|
|
path: meal-tracker.zip
|
|
|
|
build-android:
|
|
runs-on: ubuntu-latest
|
|
needs: test-and-package
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup Java 17
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: temurin
|
|
java-version: "17"
|
|
|
|
- name: Build APK
|
|
run: |
|
|
export ANDROID_SDK_ROOT="$HOME/android-sdk"
|
|
mkdir -p "$ANDROID_SDK_ROOT"
|
|
|
|
# Download Android command-line tools
|
|
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip \
|
|
-O /tmp/cmdline-tools.zip
|
|
unzip -qo /tmp/cmdline-tools.zip -d /tmp/cmdline-tools-tmp
|
|
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
|
|
mv /tmp/cmdline-tools-tmp/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/latest"
|
|
|
|
# Accept licenses and install SDK packages
|
|
yes | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null 2>&1
|
|
"$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" \
|
|
"platform-tools" \
|
|
"build-tools;34.0.0" \
|
|
"platforms;android-34" > /dev/null 2>&1
|
|
|
|
# Create local.properties
|
|
echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
|
|
|
|
# Download Gradle
|
|
wget -q https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /tmp/gradle.zip
|
|
mkdir -p android/.gradle-home
|
|
unzip -qo /tmp/gradle.zip -d android/.gradle-home
|
|
|
|
# Generate wrapper
|
|
cd android
|
|
.gradle-home/gradle-8.7/bin/gradle wrapper --gradle-version 8.7 --no-daemon
|
|
|
|
# Build
|
|
./gradlew assembleDebug --no-daemon
|
|
|
|
- name: Upload APK artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: meal-tracker-apk
|
|
path: android/app/build/outputs/apk/debug/*.apk
|