CI/CD pipeline for Android AI agents. Use this skill whenever setting up GitHub Actions
for Android, automated testing in CI, APK/AAB build automation, Play Store deployment
automation, Fastlane for Android, code quality checks in CI, lint in pipeline, unit test
automation, instrumented test automation, Firebase Test Lab integration, code signing in CI,
artifact upload, pull request checks, or any continuous integration/deployment for Android.
Instalación
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
CI/CD pipeline for Android AI agents. Use this skill whenever setting up GitHub Actions
for Android, automated testing in CI, APK/AAB build automation, Play Store deployment
automation, Fastlane for Android, code quality checks in CI, lint in pipeline, unit test
automation, instrumented test automation, Firebase Test Lab integration, code signing in CI,
artifact upload, pull request checks, or any continuous integration/deployment for Android.
CI/CD for Android
GitHub Actions — complete workflow
# .github/workflows/ci.ymlname:AndroidCIon:push:branches: [main, develop]
pull_request:branches: [main, develop]
concurrency:group:${{github.workflow}}-${{github.ref}}cancel-in-progress:true# cancel in-progress runs on new pushjobs:lint:name:Lintruns-on:ubuntu-lateststeps:-uses:actions/checkout@v4-uses:actions/setup-java@v4with:distribution:temurinjava-version:17-uses:gradle/actions/setup-gradle@v4-name:Runlintrun:./gradlewlint--continue-name:Uploadlintresultsif:failure()uses:actions/upload-artifact@v4with:name:lint-resultspath:'**/build/reports/lint-results-*.html'unit-test:name:UnitTestsruns-on:ubuntu-lateststeps:-uses:actions/checkout@v4-uses:actions/setup-java@v4with:distribution:temurinjava-version:17-uses:gradle/actions/setup-gradle@v4-name:Rununittestsrun:./gradlewtestDebugUnitTest--continue-name:Uploadtestresultsif:always()uses:actions/upload-artifact@v4with:name:unit-test-resultspath:'**/build/test-results/**/*.xml'build:name:Buildneeds: [lint, unit-test]
runs-on:ubuntu-lateststeps:-uses:actions/checkout@v4-uses:actions/setup-java@v4with:distribution:temurinjava-version:17-uses:gradle/actions/setup-gradle@v4-name:BuilddebugAPKrun:./gradlewassembleProdDebug-name:UploadAPKuses:actions/upload-artifact@v4with:name:debug-apkpath:app/build/outputs/apk/prod/debug/*.apkdeploy-internal:name:DeploytoInternalTestingneeds:buildruns-on:ubuntu-latestif:github.ref=='refs/heads/main'environment:productionsteps:-uses:actions/checkout@v4-uses:actions/setup-java@v4with:distribution:temurinjava-version:17-uses:gradle/actions/setup-gradle@v4-name:Decodekeystorerun:echo"${{ secrets.KEYSTORE_BASE64 }}"|base64-d>keystore.jks-name:BuildreleaseAABenv:KEYSTORE_PATH:${{github.workspace}}/keystore.jksKEYSTORE_PASSWORD:${{secrets.KEYSTORE_PASSWORD}}KEY_ALIAS:${{secrets.KEY_ALIAS}}KEY_PASSWORD:${{secrets.KEY_PASSWORD}}run:./gradlewbundleProdRelease-name:UploadtoPlayStore(Internal)uses:r0adkll/upload-google-play@v1with:serviceAccountJsonPlainText:${{secrets.PLAY_SERVICE_ACCOUNT_JSON}}packageName:com.company.appreleaseFiles:app/build/outputs/bundle/prodRelease/*.aabtrack:internalstatus:completed
Rule 2: Required secrets setup
GitHub Secrets needed:
KEYSTORE_BASE64 → base64 of your .jks file: base64 -i keystore.jks | pbcopy
KEYSTORE_PASSWORD → keystore password
KEY_ALIAS → key alias
KEY_PASSWORD → key password
PLAY_SERVICE_ACCOUNT_JSON → Google Play service account JSON with Editor permissions
Rule 3: Gradle caching for faster CI
# Add to every job that uses Gradle-uses:gradle/actions/setup-gradle@v4with:cache-read-only:${{github.ref!='refs/heads/main'}}# Saves 3-5 minutes per run
❌ Committing keystore or passwords — always use GitHub Secrets
❌ No concurrency: group — multiple PRs queue up unnecessarily
❌ Running tests before lint — lint is faster, fail fast
❌ No Gradle caching — every CI run downloads all dependencies
❌ Building unsigned APK for Play Store — AAB must be signed
❌ Uploading APK instead of AAB — Play Store requires AAB since 2021