Skip to content

ci: build and upload Android APK on every push to master#13

Merged
nbucic merged 6 commits into
masterfrom
claude/android-interval-timer-app-JYhZc
Jul 13, 2026
Merged

ci: build and upload Android APK on every push to master#13
nbucic merged 6 commits into
masterfrom
claude/android-interval-timer-app-JYhZc

Conversation

@nbucic

@nbucic nbucic commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds .github/workflows/build-android.yml — triggers on every push to master (i.e. every merged PR)
  • Builds a release-type Android APK with debug symbols stripped (NATIVEPHP_ANDROID_DEBUG_SYMBOLS=NONE)
  • Uploads the APK as a GitHub Actions artifact named interval-timer-v{version} (30-day retention)

What the workflow does

  1. JDK 17 (actions/setup-java) — required by Gradle 8.x; $JAVA_HOME is passed to NativePHP as NATIVEPHP_GRADLE_PATH
  2. Android SDK — installs platforms;android-35 and build-tools;35.0.0 via sdkmanager (matches compile_sdk/target_sdk in config/nativephp.php); $ANDROID_SDK_ROOT is passed as NATIVEPHP_ANDROID_SDK_LOCATION
  3. PHP 8.5 + composer install --no-dev--no-dev skips the local-path nbucic/audio-tts package without errors
  4. Vite build (npm ci && npm run build) — frontend assets must be built before bundling
  5. php artisan native:package android — produces the APK, signed with Android's auto-generated debug keystore (sideloadable, not Play Store submittable)
  6. Upload artifact — APK named after the version in version.json, retained for 30 days

No secrets required

The APK is signed with the debug keystore that the Android SDK setup creates automatically. If explicit release signing is needed later, add KEYSTORE_BASE64, KEYSTORE_PASSWORD, KEY_ALIAS, and KEY_PASSWORD secrets and a post-build apksigner step.


Generated by Claude Code

nbucic added 6 commits July 13, 2026 22:08
- Setting::current() now uses firstOrCreate (matches docblock intent of
  "creating it with defaults on first run")
- Seed migration skips in testing environment so tests start with empty
  tables; transaction rollback handles isolation per-test
- Remove redundant RefreshDatabase from uses() since TestCase already has it
@nbucic nbucic merged commit f4c0278 into master Jul 13, 2026
1 check passed
@nbucic nbucic deleted the claude/android-interval-timer-app-JYhZc branch July 13, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant