Sign inSign up

bertrandmartel/docker-jenkins-android

By bertrandmartel

•Updated over 8 years ago

A jenkins docker image for Android development

Image
4

1.2K

bertrandmartel/docker-jenkins-android repository overview

⁠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

⁠Run

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 namedescriptionsample value
ANDROID_SDKAndroid SDK release namer25.2.2
ANDROID_NDKAndroid NDK release nameandroid-ndk-r12b
ERASE_ANDROID_SDKclear SDK directory before installing a new one1 or 0
ERASE_ANDROID_NDKclear NDK directory before installing a new one1 or 0
ANDROID_BUILD_TOOLS_FILTERadditionnal build tools versions to install comma separated23.0.2,23.0.3
SSL_CERTpath to certificate (*)
SSL_KEYpath to key file (*)
SSL_DESTpath for the newly created JKS from the certs above (*)
SSL_NEW_PASSnewly 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

⁠docker-compose

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

docker-compose up

⁠docker-cloud

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

⁠Debug

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 : git@server/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> :


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 :


Tag summary

Content type

Image

Digest

Size

401.9 MB

Last updated

over 8 years ago

docker pull bertrandmartel/docker-jenkins-android