ci(android-llmservice): always build the APK; split off the emulator test as an optional non-gating check#321
Merged
bernardladenthin merged 1 commit intoJul 10, 2026
Conversation
…data OOM) The build-android-llmservice emulator step FATALed with 'Not enough space to create userdata partition. Available: 3892 MB, need 7372 MB' — the AVD userdata partition couldn't be created, so the emulator never booted and the boot-poll loop ran until timeout (looked like a hang). Root cause is disk pressure, not the app change: the job does the release R8 build (AAB+APK) AND restores the full ~10 GB GGUF cache, but only adb-pushes the tiny draft model to the emulator. Add a cleanup step right before the emulator (both emulator jobs) that deletes every restored model except DRAFT_MODEL_NAME plus large unused preinstalled toolchains (dotnet/ghc/powershell/CodeQL) and prunes docker images — freeing ~15 GB so the userdata partition fits. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HTS5FpMtBLJENTGoRUrp5m
|
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Two related CI fixes for the LLM Service Android app so a flaky/slow emulator never blocks getting the installable APK.
1. Free disk space before the emulator. The emulator FATALed with
Not enough space to create userdata partition. Available: 3892 MB, need 7372 MB→ never booted → the boot-poll loop ran to timeout (looked like a hang). Root cause: the full ~10 GB GGUF cache restore left too little free, but only the tiny draft model is pushed to the device. Added a cleanup step (both emulator jobs) that deletes every restored model exceptDRAFT_MODEL_NAME(genericfind … ! -name) + large unused preinstalled toolchains + docker images → frees ~15 GB. Verified in the last run: "Disk space requirements … are met", emulator booted,connectedDebugAndroidTeststarted.2. Split build ⟂ emulator test. Previously one job built the AAB/APK and ran the emulator test, with the artifact-upload steps after the test — so a red emulator meant no APK. Now split into two jobs:
build-android-llmservice— builds the release AAB + installable APK and uploads them. No emulator, no model cache. A flaky emulator can never block the APK. (Also droppedverify-model-cachefrom itsneedsandassembleDebugfrom the build.)test-android-llmservice(new) — a separate, non-gating check that boots the emulator and runsconnectedDebugAndroidTest. It can go red on its own without stopping the build/artifacts. Keep it non-required in branch protection to make the emulator test optional (visible-but-non-blocking) — exactly the "sim test more optional but still can be red" ask.CLAUDE.md's CI-wiring section updated to describe the split.
Split out of #320 (already merged); this is CI-only, on top of current
main.Test plan
yaml.safe_load); both jobs parse with correctneedsChecklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01HTS5FpMtBLJENTGoRUrp5m