Implementing CI-CD for Android-based projects using GitHub

Shailesh Mishra
3 min readAug 3, 2023

Implementing CI-CD for Android-based projects using GitHub and automating unit tests, release package creation, and publishing to Maven Central involves several steps. Here’s a detailed guide to help you set up the entire workflow:

Prerequisites:

  • GitHub account and a repository containing your Android project.
  • Android project with Gradle for build automation.
  • Maven Central account or an account on JFrog’s Bintray (for publishing artifacts).

Step 1: Set up Unit Tests:

  • Ensure your Android project has proper unit tests using frameworks like JUnit or Espresso.
  • Make sure your unit tests can be executed via Gradle tasks.

Step 2: Configure Gradle for Maven Central Publishing:

  • Add the necessary configurations in your project’s `build.gradle` to publish artifacts to Maven Central or JFrog’s Bintray.
  • Set up the required information, like group ID, version, and publication information.

Step 3: Create a GitHub Actions Workflow:

  • In your GitHub repository, navigate to the “Actions” tab.
  • Create a new workflow by selecting “Set up a workflow yourself” or choose a template that suits your needs (e.g., Android CI).
  • Create a new YAML file (e.g., `.github/workflows/android-ci.yml`) and define the workflow steps.

Step 4: Define CI-CD Workflow:

name: Android CI

on:
push:
branches:
- main

jobs:
build:

runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: '11'

- name: Set up Android SDK
uses: actions/setup-android@v1
with:
sdk-version: '30'

- name: Run unit tests
run: ./gradlew test

- name: Build release package and publish to Maven Central
if: startsWith(github.ref, 'refs/tags/') # Execute only when a tag is created
run: |
./gradlew assembleRelease

# Replace the following lines with your actual publishing steps to Maven Central
echo "Publishing to Maven Central..."

Your CI-CD workflow YAML file should include the following steps:

  1. Set up the build environment:
  • Use the `jobs` section to define a build environment, like Ubuntu, macOS, or Windows, depending on your project’s needs.

2. Checkout your repository:

  • Use the `actions/checkout` action to clone your repository in the build environment.

3. Set up JDK and Android SDK:

  • Use the `actions/setup-java` action to install the required JDK version.
  • Use the `actions/setup-android` action to install the required Android SDK.

4. Run unit tests:

  • Execute Gradle tasks for running unit tests using the `run` command.
  • Ensure that the build fails if any tests fail by using the `continue-on-error: false` option.

5. Create release package when a tag is created:

  • Use the `on` section with `tags` event to trigger the workflow when a new tag is pushed.
  • Define steps to build a release package (APK or AAR) using Gradle tasks.

6. Publish to Maven Central:

  • Define steps to publish the artifacts to Maven Central or JFrog’s Bintray using Gradle tasks and respective API calls or plugins.

Step 5: Push and Create Tags:

  • Commit the changes and push them to your GitHub repository.
  • To create a new tag, use the `git tag` command followed by `git push — tags`.

Step 6: Monitor and Verify:

  • Check the “Actions” tab in your GitHub repository to monitor the CI-CD workflow’s execution.
  • Review the workflow logs to ensure that unit tests pass, the release package is generated, and publishing to Maven Central is successful.

Please note that this is a high-level overview, and there might be additional configurations and steps required based on your project’s specific setup and requirements. It’s essential to thoroughly test the CI-CD workflow before deploying it in a production environment. Additionally, consider setting up proper security measures and access controls to protect sensitive information, such as API keys and signing certificates

--

--