Integracion del Bamboo, Bitbucket y Nexus con AWS Beanstalk, para la integración continúa.

A la hora de implantar un nuevo proyecto en algunos clientes que usan un modelo de integración continua y despliegue continuo basado en software de terceros, hemos tenido que integrar este modelo con el modelo de despliegues de AWS ElasticBeanstalk.

El stack de Atlasian cuenta con los siguientes elementos:

Bitbucket es un repositorio de código accesible vía web, que permite el trabajo colaborativo.

Nexus es gestor de repositorios.

Bamboo que es un integrador que permite automatizar despliegues, compilaciones, etc.

AWS  ElasticBeanstalk que nos permite generar aplicaciones y desplegarlas sobre la infraestructura de AWS de forma rápida.

La solución final integra todos los elementos con AWS, para permitir la integración continua y el despliegue continuo.

Vamos a detallar los pasos que se realizan, con los diferentes elementos:

Los equipos de desarrollo, trabajan en el código desde Bitbucket, de forma que pueden trabajar en el código de forma conjunta y registrando todos los cambios en la herramienta, además de tener integración con otros elementos de Atlassian como Jira, para registrar su trabajo y atender a las solicitudes del resto de departamentos.

Cada vez que suben una modificación de código, este se compila automáticamente con el plan de construcción de Bamboo subiendo el artefacto final a Nexus y pasando los test necesarios (test unitarios, test de sonnarqube, etc).

Una vez que el código ya está en nexus, se procede a que automáticamente se despliegue en el entorno.

Para esto nos valemos nuevamente de Bamboo, en este caso además del artefacto que se genera en Nexus, es necesario desplegar las ebextensions que tenemos para personalizar el despliegue de la infraestructura y poder cubrir todas las necesidades de los diferentes desarrollos.

Cada proyecto además del repositorio de código en bitbucket que gestionan los equipos de desarrollo, tiene un repositorio adicional de Infraestructura, con las 3 ramas (alpha, release y master), con las diferentes ebextensions, que queremos desplegar.

De esta forma, podemos abstraer totalmente las modificaciones en código, con las modificaciones que puedan realizarse en la infraestructura.

En la primera etapa el plan de despliegue realiza las siguientes tareas, se descarga el artefacto de nexus, agrega las ebextensions, sube el nuevo artefacto con las ebextensions a un S3 y posteriormente sube la nueva versión a Beanstalk, sin desplegarla.

Para esto es necesario generar un usuario en AWS, con permisos para S3 y Beanstalk y configurarlo en bamboo y usar la api de conexión.

Cada proyecto tendrá su conector con AWS en Bamboo y su usuario independiente.

Una vez que la primera fase, de configuración del plan de despliegue, subiendo la aplicación a Beanstalk está ejecutada de forma correcta, se procede a la segunda fase.

Esta segunda fase se ejecuta automáticamente, en Desarrollo y Preproducción, en Producción, solo se ejecuta automáticamente la primera fase y la segunda solo se ejecuta manualmente, para controlar su ejecución.

En esta segunda fase, se ejecuta el update versión de ElasticBeanstalk, desplegando el nuevo código en el entorno.

En los proyectos que en los que el código está dividido en microcódigos, se utiliza el método Blue/Green subiendo el nuevo microcódigo a la carpeta blue y usando este nuevo microcódigo, con el resto de microcódigos ya validados y generando un único artefacto. Una vez que este código se despliega de forma correcta, el nuevo microcódigo se pasa a la carpeta Green sustituyendo al anterior, de forma que en nuevos despliegues de otros microcódigos, se use este nuevo microcódigo.

Este modelo, nos permite la integración total del modelo de integración continua y despliegue continuo usando las herramientas ya integradas en el cliente con AWS ElasticBeanstalk. De esta forma conseguimos una agilidad e independencia de los equipos de desarrollo, que pueden probar los cambios de código de forma rápida y sin perder el control sobre la plataforma.

 

 

 

 

everis cloud adoption journey

contacta

Para conocer en detalle el alcance de nuestros servicios o resolver cualquier tipo de duda, por favor contacta con nosotros.
Superior