Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!

We spend hours scrolling social media and waste money on things we forget, but wonโ€™t spend 30 minutes a day earning certifications that can change our lives.
Master in DevOps, SRE, DevSecOps & MLOps by DevOpsSchool!

Learn from Guru Rajesh Kumar and double your salary in just one year.


Get Started Now!

Android app build and publishing workflow using GitHub Actions

To fully automate your Android app build and publishing workflow using GitHub Actions, we’ll break it into three main steps:


โœ… What This GitHub Action Will Do

  1. Build the APK using Gradle on a GitHub Actions runner.
  2. Upload the APK to GitHub Releases as an asset (optional: GitHub Packages if you prefer).
  3. Deploy the APK to Google Play Store – Internal/Test Track using the r0adkll/upload-google-play action.

๐Ÿ“ Prerequisites

1. Play Store Setup

  • Create a Google Play Console account.
  • Upload the initial APK manually once to create the app entry.
  • Create a Service Account with Release access and generate a JSON key file.

2. GitHub Repository Secrets

Add these secrets to your repository settings:

Secret NameDescription
ANDROID_KEYSTORE_BASE64Your keystore file, base64 encoded
ANDROID_KEYSTORE_PASSWORDKeystore password
ANDROID_KEY_ALIASKey alias
ANDROID_KEY_PASSWORDKey password
GOOGLE_PLAY_SERVICE_ACCOUNT_JSONContents of service_account.json
RELEASE_SIGNING_ENABLEDtrue or false
PACKAGE_NAMEYour appโ€™s package name (e.g., com.example.app)

๐Ÿ“œ GitHub Actions Workflow (.github/workflows/android-release.yml)

name: Android Release Pipeline

on:
  push:
    tags:
      - 'v*'  # Triggers on version tags like v1.0.0

jobs:
  build:
    name: Build APK
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Code
      uses: actions/checkout@v4

    - name: Set up JDK
      uses: actions/setup-java@v3
      with:
        distribution: 'temurin'
        java-version: '17'

    - name: Decode Keystore
      if: env.RELEASE_SIGNING_ENABLED == 'true'
      run: |
        echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > my-release-key.keystore

    - name: Build APK
      run: ./gradlew assembleRelease
      env:
        KEYSTORE_FILE: my-release-key.keystore
        KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
        KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
        KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}

    - name: Upload APK to GitHub Release
      uses: softprops/action-gh-release@v2
      with:
        name: "Release ${{ github.ref_name }}"
        tag_name: ${{ github.ref_name }}
        files: app/build/outputs/apk/release/app-release.apk
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  upload_to_playstore:
    name: Upload to Google Play
    runs-on: ubuntu-latest
    needs: build

    steps:
    - name: Download Release APK from GitHub
      uses: actions/download-artifact@v4
      with:
        name: app-release.apk

    - name: Upload to Google Play (Internal)
      uses: r0adkll/upload-google-play@v1
      with:
        serviceAccountJsonPlainText: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }}
        packageName: ${{ secrets.PACKAGE_NAME }}
        releaseFiles: app/build/outputs/apk/release/app-release.apk
        track: internal  # use 'alpha', 'beta', 'production', or 'internal'
Code language: PHP (php)

๐Ÿ“Œ Notes

  • This will auto-trigger when you push a tag like v1.0.0.
  • r0adkll/upload-google-play handles version codes and uploads the APK to the internal testing track.
  • You can switch the track to alpha, beta, or production as needed.

๐Ÿ” How to Encode Keystore

base64 your-release-key.keystore > keystore.txt
# Copy contents and store in GitHub secret: ANDROID_KEYSTORE_BASE64
Code language: CSS (css)

Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

Certification Courses

DevOpsSchool has introduced a series of professional certification courses designed to enhance your skills and expertise in cutting-edge technologies and methodologies. Whether you are aiming to excel in development, security, or operations, these certifications provide a comprehensive learning experience. Explore the following programs:

DevOps Certification, SRE Certification, and DevSecOps Certification by DevOpsSchool

Explore our DevOps Certification, SRE Certification, and DevSecOps Certification programs at DevOpsSchool. Gain the expertise needed to excel in your career with hands-on training and globally recognized certifications.

0
Would love your thoughts, please comment.x
()
x