A jenkins docker image for Android development
1.2K
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
| 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 vars-template.sh configuration, then :
source vars-template.sh
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
Admin > ApplicationCreate 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) :

Manage Jenkins > Configure Global SecurityFill up checking Gitlab Authentication Plugin in Access control :

Now, Jenkins user will be authenticated via Gitlab
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 :
git@server/repo.gitorigin+refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*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> :

In Manage Jenkins > Configure System :

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

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

Content type
Image
Digest
Size
401.9 MB
Last updated
over 8 years ago
docker pull bertrandmartel/docker-jenkins-android