Awesome Open Source
Awesome Open Source

Jenkins Docker image for Android dev

Build Status

A jenkins docker image with Android SDK/NDK global install and the following pre-installed plugins :

Other packages are also downloaded to build Android applications correctly


docker run -p 8080:8080 -p 50000:50000 \
           -v /home/user/Android/sdk:/opt/android/sdk \
           -v /home/user/Android/ndk:/opt/android/ndk \
           -v your_home/jenkins_home:/var/jenkins_home bertrandmartel/docker-jenkins-android

Environment variables

Variable name description sample value
ANDROID_SDK Android SDK release name r25.2.2
ANDROID_NDK Android NDK release name android-ndk-r12b
ERASE_ANDROID_SDK clear SDK directory before installing a new one 1 or 0
ERASE_ANDROID_NDK clear NDK directory before installing a new one 1 or 0
ANDROID_BUILD_TOOLS_FILTER additionnal build tools versions to install comma separated 23.0.2,23.0.3
SSL_CERT path to certificate (*)
SSL_KEY path to key file (*)
SSL_DEST path for the newly created JKS from the certs above (*)
SSL_NEW_PASS newly created keystore password (*)

(*) required only if using certificates instead of JKS (working with letsencrypt certs)

Example :

docker run -p 8080:8080 -p 50000:50000 \
           -e "ANDROID_BUILD_TOOLS_FILTER=23.0.2,23.0.3" \
           -e "ANDROID_SDK=r25.2.2" \
           -e "ANDROID_NDK=android-ndk-r12b" \
           -v /home/user/Android/sdk:/opt/android/sdk \
           -v /home/user/Android/ndk:/opt/android/ndk \
           -v your_home/jenkins_home:/var/jenkins_home bertrandmartel/docker-jenkins-android


https configuration is enabled by default with keystore.jks in a keys directory :

docker-compose up


Edit configuration, then :


envsubst < stackfile-template.yml > stackfile.yml

docker-cloud stack create --name jenkins -f stackfile.yml

docker-cloud start jenkins


docker exec -it jenkins_image bash

Configure Giltab oauth

  • In your Gitlab domain go to Admin > Application

Create a new application with a chosen name and a redirection URI like this :

  • https://your-jenkins-domain:8083/securityRealm/finishLogin

Then, you will have generated Application ID (client ID) and Secret (Client Secret) :

  • Go to Manage Jenkins > Configure Global Security

Fill up checking Gitlab Authentication Plugin in Access control :

Now, Jenkins user will be authenticated via Gitlab

Configure Giltab push trigger

In Manage Jenkins > Configure System :

Gitlab URL is : https://<your host>:<your port>

Enter a Gitlab API Token that you got from Gitlab in Profile Settings > Access Tokens :

In your job configuration, Set GitLab connection and Git repository config as :

  • Repository URL : [email protected]/repo.git
  • Name : origin
  • RefSpec : +refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
  • Branch specifier : origin/${gitlabSourceBranch}

In Build Trigger, set Build when a changed is pushed to Gitlab :

In your gitlab repository go to Webhooks :

Then, set the webhook URL as : https://<jenkins-host>:<port>/project/<your job> :

Configure Giltab Logo

In Manage Jenkins > Configure System :

Endpoint URL is : https://<your-gitlab-host>:<port>/api/v3

Configure Slack notifications

In your job configuration, add a Slack Notification Post Build Action :

External Links

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Shell (175,998
Docker (98,252
Sdk (32,762
Slack (13,009
Jenkins (8,208
Ssl (7,693
Gitlab (5,582
Ndk (2,292
Android Ndk (343
Jenkins Docker Image (4