Integra datos estadísticos provinientes de aplicaciones de Ciclo de Vida, como por ejemplo: BSM, AppPulse, PPM, ALM, RUM, ServiceNow.
Configuración de ambientes DEV para pruebas locales y luego explicación de ejecución de pruebas en ambientes de TEST.
Para ejecutar la aplicación desde contenedores se requiere declarar las siguientes variables de ambiente:
- HUBBLE_FRONTEND_NAME: Nombre de la imágen.
- HUBBLE_FRONTEND: Nombre del contenedor.
- HUBBLE_FRONTEND_PORT: Número de puerto por ejemplo "80:8080".
- HUBBLE_MONGODB: Nombre del contenedor de mongo. Por convención es mongodb-nombre-rama
- HUBBLE_MONGODB_VOL: Dirección de dónde se mapean los datos. Por ejemplo: /data/mongodb-nombre-rama/:/data/db/
- HUBBLE_TASKRUNNER: Nombre del contenedor.
- HUBBLE_TASKRUNNER_NAME: Nombre de la imágen.
Los archivos Dockerfile se encuentran en:
- /hubble/hubble.backend.tasksrunner/src/main/resources/docker/Dockerfile
- /hubble/hubble.frontend.web/src/main/resources/docker/Dockerfile
Desde la ubicación del Dockerfile ejecutar:
-
/hubble/hubble.backend.tasksrunner/src/main/resources/docker$ docker build .
-
/hubble/hubble.frontend.web/src/main/resources/docker$ docker build .
Un ejemplo customizado de docker-compose.yml:
version: '3.0'
services:
hubble-app:
image: hubble/hubble.frontend.web
container_name: hubble
ports:
- 8080
hostname: hubble
links:
- mongodb:mongo
mongodb:
image: mongo
container_name: mongodb
ports:
- 27017
hostname: mongodb
volumes:
- /data/db/
hubble-taskrunner:
image: hubble/hubble.backend.tasksrunner
container_name: hubble-taskrunner
hostname: hubble-taskrunner
stdin_open: true
tty: true
links:
- mongodb:mongo
$ export HUBBLE_FRONTEND_NAME="localhost:5000/hubble/hubble.frontend.web"
Por último, se ejecuta el docker-compose que armoniza los contenedores en línea.
$ docker-compose up -d
Para ver el log, de algún contenedor simplemente escribir el siguiente comando en la terminal.
$ docker logs <Nombre de Contenedor>
Para detener los contenedores se escribe en la terminal el comando
$ docker-compose down
Los datos obtenidos por los proveedores se guardan en la base de datos de Mongo. El nombre de la base de datos actualmente se llama hubble-test. No se necesitan datos para correr la aplicación, desde que se inicia tomara los datos para las siguientes aplicaciones:
- applicationStorage
- availabilityStorage
- issueStorage
- workItemStorage
$ docker run --name=mongo -v /data/mongodb:/data/db --detach -p 27017:27017 mongo
# para acceder al shell
$ sudo docker exec -it -u root mongo /bin/bash
La base de datos también se puede correr de manera local mientras esté conectado al puerto: 27017.
Alternativamente, se puede ejecutar el TasksRunner de maner de poder ir consumiendo datos en la base datos de MongoDB a medida de desarrollo en forma local.
$ cd hubble.backend.tasksrunner\target
$ mvn exec:java -Dexec.mainClass="hubble.backend.tasksrunner.application.TasksRunnerApplication" -Dmaven.test.skip=true
Para crear el ambiente de TEST de una rama específica se utiliza el Job de Jenkins: Hubble-MultiBranch-TEST
El Job se encarga de ejecutar un proceso en el que primero baja las fuentes de la rama, compila sin las pruebas, crea las imagenes de docker de la aplicación y luego las levanta. El Front-End va a usar un puerto aleatorio que esté disponible. A excepción de la rama dev que sí va a usar el puerto 80.
La imagen de mongo que se utiliza es la misma, es decir, sí no está creada con el nombre: mongodb-branch-name, éste proceso la crea. Apuntando al volúmen de datos: /data/mongodb-nombre-rama/
El número de versionado para la rama TEST: NUMERO_BUILD.NOMBRE_DE_LA_RAMA
- No permitir espacios en blanco al final de cada línea.
- No dejar comentarios innecesarios.
- El nombre de los métodos tiene que tener TOTAL significado y concordancia con lo que hace.
- Respetar los principios de desarrollo SOLID
- Para el lenguaje JAVA respetar las siguientes convenciones: http://www.literateprogramming.com/javaconv.pdf
- Verificar que las pruebas corran en todos los proyectos.
- Pruebas de integración deben contemplar casos diversos de complejidad ciclomática.Link
- Buena actitud de equipo.
- TasksRunner
- Providers
- Services
- Storage
Usamos el prefijo find
para los métodos que devuelven y obtienen datos. Para los que guardan datos usamos el prefijo save
.
Usamos el prefijo get
para obtener datos, ya que es el standard para las comunicaciones HTTP. Y usamos set
para guardar los datos.
- Business
- Web
El proyecto frontend.business contiene los modelos que conforman el negocio llamado business. El paquete de Business contiene la lógica de negocio que crea la vista del usuario, o sea, hace de la parte controladora de la vista. El paquete Views guarda las estructuras de los datos con los cuales se rellena la vista (html) que está en el proyecto frontend.web.
El servidor de integración continua, Jenkins, corre el programa Jacoco (http://www.eclemma.org/jacoco/) para evaluar la cobertura del desarrollo de Hubble. Se requiere una mínima cobertura del 20% para que el maven permita compilarlo con satisfacción.