DevOps con Azure DevOps (VSTS) : CI-CD para aplicación Xamarin Android

Con Visual Studio Team Services (VSTS)  ahora Azure DevOps y Visual Studio App Center, tendrá todo lo que necesita para crear una canalización completa de CI / CD para sus aplicaciones móviles. En esta sesión, demostramos exactamente cómo usar VSTS y App Center para implementar una solución móvil en Xamarin Android.

Primero crearemos nuestro proyecto Xamarin Forms, en este caso creare para las tres plataformas y como código compartido utilizare NETStandar 2. Mi solución quedaría de esta manera.

1

Ahora crearemos nuestro proyecto en Azure DevOps, de manera privada y como control de código fuente Git y marco de trabajo el que gusten, yo he elegido Scrum.

2

Con nuestro Visual Studio nos conectamos a nuestra cuenta de Azure DevOps y seleccionamos el proyecto que hemos creado previamente para nuestro ejemplo de CI-CD.

3

Agregamos nuestra solución demo al control de código fuente, se crea una carpeta oculta en el directorio principal con una extensión .git. Ahora pasamos a enlazar nuestro proyecto con nuestro servicio en la nube Azure DevOps.

4.png

Nos inspiramos y creamos una aplicación bien chula y cuando ya estamos seguros de tener una versión para que prueben nuestros usuarios finales o beta testers hacemos un commit y push, en este caso confirmar todo y sincronizar. Ya tenemos nuestro proyecto en nuestro Azure DevOps en la sección Repos.

5

Nos vamos a la sección de Pipelines/Builds y seleccionamos crear nuevo pipeline, si nos fijamos existen diversos servicios para alojar nuestro código fuente, vamos a crear nuestro build con Azure Repos Git y le damos continuar.

6.png

Se desplegara una una nueva ventana para elegir el tipo de template para generar nuestro build, seleccionamos Xamarin.Android.

7

A partir de acá viene la parte mas importante de todo el tutorial, si tienen alguna duda o no les sale pueden escribirme y con gusto les ayudare. Después de seleccionar nuestro template Xamarin.Android y darle aplicar nos mostrara una ventana para configurar las diversas tareas que hará nuestro build, por defecto les cargara así como ami, yo en mi caso no tengo un proyecto para las pruebas y por eso me sale esta tarea con una opacidad menor y con una especie de susbrayado, eliminamos todas esas dando click derecho y remover las tareas seleccionadas.

8

Primero editaremos nuestra tarea Build Xamarin.Android, seleccionamos esa opción y nos desplegara una ventana a la derecha, le damos en la sección project los tres puntos suspensivos para elegir nuestro .csproj del proyecto Android y todo lo demás debe quedar igual.

9.png

Ahora configuraremos nuestra tarea Signing and aligning APK files, acá subiremos nuestro certificado para firmar nuestras aplicaciones,  en Signing Options seleccionamos Sign the APK y subimos nuestro archivo con extensión .keystore.

10

Vamos al Tab de Variables y creamos dos variables una para la contraseña y otra para nuestro alias, estos valores deben ser los mismos que hemos ingresado para generar el archivo key.keystore.

11.png

Ahora regresamos al Tab de tareas (tasks) y hacemos referencia a esas variables en los campos Keystore password y Alias.

12.png

Todo lo demás dejamos igual por defecto y le damos Save and Queue, automáticamente se empezara a generar nuestro build. Si todo sale bien nos saldrá una pantalla igual a esta.

13

Listo hasta este paso hemos generado nuestro build y ahora pasaremos a generar a partir de ese build un nuevo release. Se mostrara una ventana para seleccionar un template para eso, nosotros elegiremos uno job en blanco o vació.

14.png

Nos pedirá un nombre para nuestro Stage, podemos crear cuantos escenarios queramos según el job que queremos realizar e incluso en un mismo tener varios jobs trabajando. En este caso le di de nombre Dev.

15.png

En la sección de artefactos aparece nuestro build y en la esquina superior un rayito, le damos click ahí y habilitamos continuous deployment trigger, cuando hagamos un commit a nuestro repositorio automáticamente se generara un build.

16.png

En nuestro Estage Dev en la parte inferior con azul esta un hipervinculo que nos dice que tenemos un 1job y 0 task, le damos click ahí y agregaremos una nueva tarea, esto hará que cuando se termine de compilar nuestra aplicación se conecte con Visual Studio App center y se deployara ahí nuestro apk en función del grupo de usuario que elegiste.

17.png

18.png

Incicamos sesion en App Center creamos nuestro proyecto, llenamos los campos requeridos y seleccionamos  OS: Android y plataform: Xamarin y le damos Crear.

19

Paso siguiente sera crear un Api token para que nuestro Azure DevOps se conecte con nuestra cuenta de App Center.

20.png

El Api Token generado lo copiamos y lo pegamos en Add Visual App Center service connection

21.png

para nuestro App slug, en la seccion de ayuda nos dice como debemos de agregar los parametros de la url : https://appcenter.ms/users/{username}/apps/{app_identifier}, en mi caso sera así

22.png

En Binary file path seleccionaremos dentro de la carpeta Drop el archivo apk que se genero con el build.

23.png

En Destination ID debemos colocar el ID de nuestro grupo de usuarios que prueban o queremos que prueben nuestra nuestra aplicación, en App Center creamos un nuevo grupo, habilitamos que sea de acceso publico, agregamos los correos de los usuarios y listo. Entramos a la configuración de nuestro grupo y copiamos el ID.

252627

Todo los campos requeridos deberían de ser llenados, bueno en mi caso queda así, todo lo demás lo dejaremos por defecto. Le damos guardar y creamos nuestro Release.

24.png

Ya configurado todo le damos generar un Release y automáticamente el apk generado se deployara en nuestro App Center y les llegara a nuestros usuarios automáticamente un correo para que puedan descargarlo y probarlo.

2829

El despliegue de aplicaciones móviles, cuando se realiza de forma manual, puede consumir mucho tiempo, ser tedioso y generar errores. Pero para sobrevivir en el mundo ágil de hoy, sus probadores y usuarios necesitan actualizaciones de la aplicación tan pronto como sea posible. Automatizar estos procesos tanto como sea posible es el objetivo final, de modo que los desarrolladores pueden centrarse en escribir código, no en implementar aplicaciones. DevOps se expande más allá de CI / CD para automatizar y facilitar la retroalimentación y la toma de decisiones del proyecto, pero esta publicación se enfocará solo en el componente CI / CD. Espero les sea de ayuda.

Saludos.