Android CI
SkillDev toolsGenerate a GitHub Actions workflow for Android — JDK + Gradle caching, build, unit + instrumented tests, Android Lint, run the Android pre-flight checks, and (optionally) sign + upload a signed app bundle to a Play track. Use when setting up CI for an Android app.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Android CI skill
What this skill tells your AI
The instructions your AI receives, as published by stevegjones/ai-first-sdlc-practices in skills/android-ci/SKILL.md and read by ahel’s review.
Generate a GitHub Actions workflow for an Android app. Complements (does not replace)
/sdlc-core:setup-ci — this adds the Android-specific pieces (JDK/Gradle caching, emulators, Play
upload). Belongs to the sdlc-team-android / play-store-release-specialist disciplines.
Arguments
path-to-android-project— the project directory (defaults to the current directory).
Steps
1. Establish the project shape
- The Gradle wrapper version, the AGP/Kotlin/JDK versions (must move together — JDK 17 floor for AGP 9.x), the module/variant layout, and whether it uses version catalogs (it should).
2. Generate the workflow
Produce an Android CI workflow file under .github/workflows/ with:
- Runner:
ubuntu-latestfor build/unit tests; a macOS runner or a Gradle-managed device / AVD action for instrumented tests. Set JDK 17 (actions/setup-java, temurin). - Gradle caching:
gradle/actions/setup-gradle(caches the Gradle user home + configuration cache); enableorg.gradle.configuration-cacheandorg.gradle.caching. - Build & test:
./gradlew assembleDebug testDebugUnitTest lint; instrumented tests via Gradle-managed devices orreactivecircus/android-emulator-runner. Uploadlint/test reports. - Android pre-flight: run
python -m android_preflight.cli .so config regressions (target-SDK below the Play minimum, unguarded exported components, missing R8, committed secrets, background-location without justification) fail CI before a release ever reaches Play.
3. (Optional) Signing + Play upload job
Only if the project releases from CI:
- Secrets: base64-encoded upload keystore, keystore/key passwords, and the Play service-account JSON — all in GitHub Actions encrypted secrets, never in the repo.
- Signing: decode the keystore, write a
keystore.properties(or pass via env), sign the release — seeandroid-signing-setup. - Build + upload:
./gradlew bundleRelease→ a signed.aab; upload with Gradle Play Publisher, fastlanesupply, or ther0adkll/upload-google-playaction to theinternaltrack (draft or a smallinProgress%), then promote after smoke-testing. - versionCode: stamp from
git rev-list --count HEADso every CI build is unique, monotonic, and traceable to a commit.
4. Report
Summarise the workflow: triggers, the test matrix, whether it gates on the pre-flight checker + lint, and whether it uploads to Play. Note any secrets the user must add before it will run.
Notes
- Keep build/test (no secrets, runs on every PR) separate from the signing/upload job so PRs stay fast.
- Gradle-managed devices give reproducible instrumented tests without an external emulator matrix.
Signals
- GitHub stars
- 41
- Forks
- 6
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
android-ci- Source
- github.com/stevegjones/ai-first-sdlc-practices