name: Android Build on: push: branches: [main] paths: - 'android/**' - '.github/workflows/android-build.yml' pull_request: branches: [main] paths: - 'android/**' - '.github/workflows/android-build.yml' jobs: build-www: name: Build WebView UI runs-on: ubuntu-latest defaults: run: working-directory: android/www steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' cache-dependency-path: android/www/package-lock.json - run: npm ci - run: npm run build - run: cd dist && zip -r ../www.zip . - uses: actions/upload-artifact@v4 with: name: www-zip path: android/www/www.zip build-apk: name: Build APK runs-on: ubuntu-latest needs: build-www defaults: run: working-directory: android steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21' - uses: android-actions/setup-android@v4 - name: Cache Gradle uses: actions/cache@v5 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: gradle-${{ hashFiles('android/**/*.gradle*', 'android/gradle/libs.versions.toml') }} restore-keys: gradle- - name: Build debug APK run: ./gradlew assembleDebug - uses: actions/upload-artifact@v4 with: name: app-debug path: android/app/build/outputs/apk/debug/app-debug.apk release: name: Create Release runs-on: ubuntu-latest needs: [build-www, build-apk] if: github.event_name == 'push' && github.ref == 'refs/heads/main' permissions: contents: write steps: - uses: actions/download-artifact@v4 with: name: app-debug - uses: actions/download-artifact@v4 with: name: www-zip # Release is created manually — artifacts are available for download # To create a tagged release, push a tag: git tag v1.0.0 && git push --tags