Enmilocalfunciona

Thoughts, stories and ideas.

Docker para construir aplicaciones Android con Bamboo

Publicado por Jose Maria Hidalgo Garcia el

Entrega ContinuaMovilidadDockerAndroidBamboo

¿Por qué?

Cuando se implanta una plataforma de Integración Continua (Bamboo, Jenkins, ...) en una empresa, los requisitos de software instalado y su mantenimiento en los agentes de construcción son un verdadero quebradero de cabeza.

En este post se usará Bamboo como servidor de Integración Continua para construir una App Android. Al encorsetar en Docker la construcción de la aplicación móvil, el software necesario para ser instalado se reduce únicamente a disponer de Docker instalado en la máquina.

Preparación de la imagen de Docker

En el repositorio de código de Github docker-android-builder encontrareis el Dockerfile con el que personalizar vuestra constructor Android.

Lo primero será compilar la imagen Docker:

docker build -t android-builder .  

Tambien disponéis de la imagen Docker compilada subida al Docker Hub. Para descargarla solo es necesario ejecutar:

docker pull jhidalgo3/android-builder  

Al revisar el Dockerfile actual se tiene que tener en cuenta que es necesario elegir una aplicación configurada para compilar con Android version 23.0.2:

# Install android SDK, tools and platforms
RUN cd /opt && curl https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz -o android-sdk.tgz && tar xzf android-sdk.tgz && rm android-sdk.tgz  
ENV ANDROID_HOME /opt/android-sdk-linux  
RUN echo 'y' | /opt/android-sdk-linux/tools/android update sdk -u -a -t platform-tools,build-tools-23.0.2,android-23  

Configuración de Docker en Bamboo

Antes de comenzar, es necesario disponer de Docker instalado y configurado en los agentes de Bamboo: Documentación oficial

Una vez instalado y configurado, podremos dar los siguientes pasos:

1.- Crear un nuevo plan de Bamboo

2.- Configurar la conexión con el repo

Se usará de ejemplo https://github.com/kinderjava/android-hello-world.git, que es una aplicación 'Hello World' para Android:

3.- Configurar la Task de Docker para usar la imagen

4.- Por último, configurar los volúmenes de la imagen

Guardamos y a continuación Bamboo comenzará a compilar la aplicación Android usando la imagen Docker configurada.


Uso directo de Docker Android Builder

Para utilizar el Docker Android Builder sobre un proyecto Android sin configurarlo en Bamboo solo es necesario ejecutar la siguiente secuencia de instrucciones:

1. Descargar el repositorio de código

git clone https://github.com/kinderjava/android-hello-world.git  

2. Ejecutar el comando Docker run para instanciar el contendor y compilar la aplicación Android

docker run --rm -v $PWD:/opt/workspace -v $PWD/.gradle:/root/.gradle android-builder ./gradlew build  

Conclusiones

Este post intenta demostrar que este tipo de soluciones es muy personalizable. Os dejo a continuación algunas opciones:

  • Imágenes Docker específicas para versiones de Android.
  • Imágenes preparadas con los keystore para firmar aplicaciones.
  • Imágenes para compilar aplicaciones híbridas: Ionic, Apache Cordova, React Native ...

Deja tus comentarios con otras ideas de uso y síguenos en Twitter para recibir nuevos post.