Automate Android App Builds with Jenkins, GitHub Webhooks, and CI/CD"

Set up Jenkins to automatically trigger Android app builds whenever changes are pushed to GitHub.

AndroidSep 13, 2024Nagesh
Automate Android App Builds with Jenkins, GitHub Webhooks, and CI/CD"

Jenkins install java

https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/generic-linux-install.html

Install Android SDK on Server

wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O cmdline-tools.zip
unzip cmdline-tools.zip -d cmdline-tools

sudo mkdir -p /usr/local/android-sdk/cmdline-tools
sudo mv cmdline-tools /usr/local/android-sdk/cmdline-tools/latest
nano ~/.bashrc
export ANDROID_HOME=/usr/local/android-sdk
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH

source ~/.bashrc

sdkmanager --licenses

sdkmanager "platform-tools" "platforms;android-35" "build-tools;33.0.2"
adb --version

/usr/local/android-sdk/cmdline-tools/latest/
├── bin/
├── lib/
├── source.properties
└── NOTICE.txt

jenkins global env set

JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto

ANDROID_HOME=/usr/local/android-sdk

PATH = $ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH

sudo chown -R jenkins:jenkins /usr/local/android-sdk

Test SDK Setup

echo "ANDROID_HOME=$ANDROID_HOME"
echo "PATH=$PATH"
adb --version

Android Build Using Jenkins


GitHub Project
- Url
Add Webhook to GitHub
url - https://jenkins_host.com/github-webhook/
type - json
secret empty
ssl verification=enabled
Which events would you like to trigger this webhook?= Just the push event.
active=true

Source management
- git(url, credentials, branch)

Build Triggers
- GitHub hook trigger for GITScm polling

Build Environment
- check add timestamps to console output

Build Steps
gradle build
- use gradlew excecutable
- make gradlew excecutable
- wrapper location = ${workspace}
- Task = clean build --stacktrace
upload to nextcloud using shell
- create folder for nextcloud build
- copy share url for folder

Batchfile
#!/bin/bash

# Nextcloud credentials
NC_USER="EXAMPLE_USER"
NC_PASS="EXAMPLE_PASSWORD"

# Nextcloud WebDAV URL
NC_URL="https://example.com/remote.php/dav/files/jenkins/builds/"

# Artifact to upload
ARTIFACT_PATH="$WORKSPACE/app/build/outputs/apk/debug/app-debug.apk"

# Upload the artifact
curl -u "$NC_USER:$NC_PASS" -T "$ARTIFACT_PATH" "$NC_URL"

echo "Upload complete"



Post Build
Archive file = app\build\outputs\apk\debug\
Mattermost notification = notify success
- custom message = next cloud folder link
- notification message include = nothing about commits