Cada vez es más común ver como los equipos de desarrollo están incorporando herramientas de integración continua como jenkins, teamcity y bamboo a sus procesos cotidianos. Hoy trabajaremos con un escenario para realizar despliegues utilizando un disparador externo como un sistema de administración de cambios.

Para efectos de nuestro artículo el desencadenador será powershell y nuestra herramienta de integración continua seleccionada será  bamboo de Atlassian.

Una herramienta de integración continua es vital en un equipo de desarrollo en estos tiempos, con ella puedes ejecutar las pruebas unitarias, realizar los builds cada vez que tu branch de desarrollo cambia o realizarlo cada noche, con ello ganarás en tiempo de desarrollo y estarás listo para los despliegues entre ambientes.

En nuestro ejercicio tenemos un solo ambiente (desarrollo), utilizamos nuestra herramienta de integración continua con las tareas de build y deploy previamente configuradas.

Hoy trabajaremos con la versión 5.13 de bamboo, misma, que nos brinda la posibilidad de realizar despliegues desde el api. Importante mencionar que esto es posible desde la versión 5.11.

Construcción (Build)

La tarea de build tiene un inline script cuyo objetivo es generar un archivo .txt con el sufijo de correspondiente al número de build. Al finalizar la tarea exitosamente bamboo obtendrá el artefacto que es el archivo generado.

En la imagen se puede observar el archivo de 15 bytes generado y que será utilizado para colocarlo en sharepoint.

Despliegue (Deploy)

En bamboo necesitamos realizar algunas configuraciones previas para preparar el ambiente y los pasos a ejecutar para realizar el despliegue. Tengamos en cuenta que estas configuraciones previas fueron hechas tomando como buil de origen el anterior generado y cuya única tarea de despliegue será tomar el archivo y subirlo al un servidor corporativo de sharepoint.

Como un paso a paso cada una de las tareas que sean configuradas al momento del despliegue el servidor de integración continua las ejecutará secuencialmente.

Hoy hemos configurado tres pasos básicos.

  1. Limpiar el directorio de trabajo: en ésta tarea se ejecuta la limpieza profunda del directorio de trabajo en el agente, donde bamboo está depositando los archivos para cada despliegue por cada ambiente. Cabe señalar que dicho directorio es reutilizada y las mejores prácticas recomienda siempre realizar una limpieza.
  2. Descarga del artefacto: en este paso el servidor descarga en el agente el artifacto generado en el build satisfactorio que sera utilizado para el despliegue. En este punto me gustaría señalar que nunca traten de rehacer un build en las tareas de despliegue utilicen los artefactos (exe, binarios, files, etc) generados en las tareas de construcción esto asegura su exitoso despliegue e integridad entre ambientes.
  3. Finalmente un Script: que ejecuta un comando en linux (agente local)  para realizar un envió del archivo a nuestro servidor de sharepoint, en este paso debemos tener en cuenta que las credenciales del servidor destino deben ser incorporadas en dicho script.

Desencadenar externo (trigger)

Previamente les sugerí que utilizaramos powershell para realizar el despliegue. Para lograrlo necesitamos ejecutar dos simples pasos.

  1. Identificar el id del enviroment: esto se logra pasando el cursor por el nombre del ambiente configurado en la tarea de despliegue.
  2. Crear un release: este paso puede ser automatizado por medio de un api, pero hoy lo haremos de manera manual para tener el control de cual es el ide de release creado. En futuros post exploremos cómo automatizar este paso.

Entregable (Release)

Dentro de Bamboo en el proyecto de despliegues hay un tab de releases, escojamos la opción de la esquina superior izquierda donde aparece Create Release:

En este momento dedebemos seleccionar cual es el build exitoso que deseamos deplegar y cual es el nombre que deseamos para el release. En este momento es donde escogemos el formato de versionamiento que estemos utilizando. Para nuestro ejercicio lo dejaremos como release-4.

Hasta este momento hemos creado un nuevo release y necesitamos identificar su número.

Tal como lo hicimos con el ambiente vayamos al tab de release y pasemos el cursor por el nombre del release.

Despliegue

Una vez identificados los dos identificadores de ambiente y versión, procedemos  cargar powershell y ejecutamos el siguiente comando

Donde aparece localhost colocaras  tu instancia de bamboo el puerto y en el id del enviroment y versión los respectivos valores arriba descritos. Recuerda colocar las credenciales para acceder a bamboo.

Una vez ejecutado el comando podrás verificar en la ruta de destino del sharepoint el archivo respectivo.

Conclusiones

Cada vez se hace necesario incorporar herramientas que nos apoyen con el despliegue entre ambientes lo que nos llevará a cultivar en nuestra organización una cultura de DevOps.

Ten en cuenta que solo podrás desplegar un build exitoso, y que los resultados del despliegue pueden de verse directamente en bamboo (mi recomendación) o ser accedidos por medio del api.

Share: