CI/CD for Android
📚 Learn more about Android action features, integrations and alternatives.
Delivering an Android app can be a grueling experience. From building APK to signing and Play Store publishing. Doing it manually every time can become cumbersome. Thankfully, with Buddy you can jam all those small steps into a single simple pipeline that will run automatically whenever you need it to!
Example Android delivery pipeline
1. Select your Git repository
For the purpose of this guide, we created a simple project in Android Studio. The project was pushed to a Git repository to allow Buddy to access its files.
Example Android Studio project
Buddy supports all popular Git hosting providers, including GitHub, Bitbucket, and GitLab. You can also use your own private Git server, or host code directly on Buddy:
Supported Git providers
Here's how the project looks in the Code tab:
Repository preview in Buddy
2. Add a new delivery pipeline
With the project attached, we can configure the deployment pipeline. Enter the pipeline's name, select the trigger mode, and define the branch from which Buddy should fetch your code:
Exemplary pipeline settings
Trigger modes
- Manual (on click) — recommended for Production
- On push (automatic) — recommended for Development
- Recurrently (on time interval) — recommended for Staging/Testing
3. Add actions
In this example, we'll add 4 actions that will perform the following tasks:
- Build your Android application
- Sign app with your key
- Upload APK to Google Play
- (Optional) Send notification to Slack
3.1 Build your Android application
Look up and click Build APK on the action list to add it to the pipeline:
APK Build on action list
The Run tab lets you determine the commands to execute. The default commands are:
export ANDROID_HOME="/opt/android/sdk"
export PATH=$PATH:/opt/android/sdk/cmdline-tools/tools/bin
if [ ! -d "$ANDROID_HOME/cmdline-tools" ]; then
curl -o sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip
unzip sdk.zip
rm sdk.zip
mkdir "$ANDROID_HOME/cmdline-tools"
mv cmdline-tools "$ANDROID_HOME/cmdline-tools/tools"
yes | "$ANDROID_HOME/cmdline-tools/tools/bin/sdkmanager" --licenses
fi
chmod +x gradlew
#./gradlew assembleDebug
./gradlew assembleRelease
$$$$$$$$$$$$$$
APK Build action configuration
Once you add the action, you can run the pipeline and check the logs if everything has passed in order:
Android build logs
3.2 Sign your application (APK)
To save the upload key in Buddy, switch to the Variables tab and click Add variable → Asset:
Adding new asset
Configure the asset details:
- enter the name – you will use it in the signing action as the
$ASSET_ID
- upload the key from your disk
- make sure that the asset is allowed to be copied to action containers
Asset configuration
With the key safely stored, you can now look up the Sign APK on the action list:
Sign APK on action list
Add the action to the pipeline and fill the main tab with required data:
- APK to sign path: the path in the pipeline filesystem with your APK build
- Key store path: the
$ASSET_ID
of the key that you saved in Buddy - Key store password: the password that you provided when creating the key
Sign APK action configuration
3.3 Deploy APK to Google Play
Now, we can deploy the signed package to the Google store. Before adding the publishing action, however, you need to configure a few things in Google:
Enable Google Play Android Developer API in your gcloud project:
Google Play Android Developer API
Create a service account in Google Cloud with a private key in the
.json
format:Creating service account in Google
Saving key as JSON
Invite the created user to your Google Play account and grant them
Releases
permissions to allow publishing to Google Play:Granting permissions to Google Play
With everything prepared, you can finally add the Google Play Publish APK action to the pipeline:
Google Play Publish APK
The action requires an integration with Google Play Store. When adding the integration, upload the key generated in the associated service account:
Adding Google Play Store integration
In the action details, select the signed package in the pipeline filesystem, define the development track (alpha, beta, production, etc.), and enter the app ID:
Google Play Publish APK action configuration
3.4 (Optional) Send notification to Slack
You can configure Buddy to send your team a message after a new package is released. In this example we'll use Slack:
Notification actions
Last modified on May 15, 2024