Calendar-backend permite leer, mostrar y modificar eventos dentro de la Universidad.
Para ver el uso de las APIs usamos swagger este funciona también como cliente.
Swagger: http://localhost:[port_number]/swagger-ui.html
Para autenticarse en el registry de imágenes de docker de gitlab, seguir los siguientes pasos:
1- Obtener el personal access token en GitLab
2- Correr:
docker login hub.ues21.edu.ar
3- Ingresar el usuario de Gitlab y el token como password
4- Correr:
docker pull hub.ues21.edu.ar/algarrobo/calendar-backend/calendar-backend:latest
Creamos un docker-compose para poder fácilmente levantar la aplicación
Para: levantar el compose:
docker-compose up --build -d
para detener los containers:
docker-compose stop
Para construir una imagen local de calendar-backend:
docker build --network bridge -t calendar-backend .
Finalmente, para levantarlo, solo hay que especificar el puerto del contenedor. i.e:
docker run -d -p 8081:8080 calendar-backend
Para detener el contenedor:
docker stop <container_id>
Contamos un Pipeline de Integración continua provisto por el mismo Gitlab,
en donde hosteamos el código fuente. El mismo se puede ver en: https://code.ues21.edu.ar/algarrobo/calendar-backend/pipelines
los pasos del pipeline son: (ver .gitlab-ci.yml)
- Build: el código se compila
- Static Analisys: El código se inspecciona estáticamente usando un servidor de sonarqube, AQUI
- Tests Unitarios: Se corren los tests unitarios
- Test funcionales: se corren los tests de funcionales
- Dockerize: Se genera una nueva imagen de Docker. (ver Dockerfile)
- Deploy: se despliega el container en el servidor de Kubernetes.
- Deploy stable: se despliega el container en el entorno stable de AWS (Sólo mediante la creación de un tag)
Para hacer un analisis estático de código usando sonarquebe localmente, se puede hacer lo siguiente:
docker run -d --name sonarqube -p 9000:9000 sonarqube
gradle sonar
Usamos Behave para los test de integración.
Usamos Behave para los test funcionales. Para correr los tests funcionales se usa una BD en memoria (h2).
Se puede levantar el entorno local para los tests funcionales con los siguientes comandos:
docker-compose -f func-test-compose.yml up --build
cd functional-test
behave
- Utilizamos las buenas prácticas de "12 factors" para aplicaciones en la nube
- Los requests mandan correlation ids, el header usado es
X-Correlation-Id
- Nos basamos en la guia de diseño de APIs de google, para diseñar y crear las APIs
- Se utiliza este estandar de calendar
- spring-boot 2.1.3 como web framework de desarrollo
- Gradle como herramienta de "build and automation"
- Aquellos responses cuyo payload supere 1KB sera enviados comprimidos
- Soporte de E-tag para los recursos
- La applicación esta diseñada para ser fácilmente dockerizada