Skip to content

Gestión de liberaciones, despliegue y entregas

makislayer edited this page Jan 17, 2021 · 5 revisions

Gestión de liberaciones, despliegue y entregas

En este apartado se explicarán los procesos, técnicas y herramientas para la gestión de las liberaciones, despliegue y entregas del proyecto decide-full-guadalentín-visualización. Para la gestión de liberaciones, despliegue y entregas hemos decidido coordinarnos la organización Full-Guadalentín completa y realizar un único despliegue de la aplicación en producción. El despliegue del sistema se hará de forma automática cuando en la rama Master del repositorio se detecte algún cambio. Para ello, haremos uso de herramientas de automatización de builds como Travis.

Proceso definido para las liberaciones

Las liberaciones son iteraciones de software implementables que se empaquetan y distribuyen con el objetivo de que la utilicen otras personas. Estas liberaciones se basan en los tags de Git, que señalan un punto específico en el historial del repositorio. A partir de un tag, se crea una nueva liberación.

GIT BRANCH

Una liberación siempre vendrá de la rama master del proyecto. El desarrollo de cada modulo se da lugar en ramas diferentes, que se integran posteriormente para unificar todos los cambios, mejoras y solución de errores. Para que un cambio importante o solución de error que se realice en una rama externa llegue a la rama master, se tiene que realizar un mergeo de esa rama con master.

Se puede acceder al histórico de tags y liberaciones de nuestro repositorio a través del siguiente enlace.

Estas liberaciones se contienen en un entorno integración continúa. Con herramientas como Travis CI se detectarán cambios en la rama master y desplegará el sistema en Heroku el cual se encargará de mantener el proyecto disponible para todo el mundo.

Licencia de software

El proyecto decide-full-guadalentín-visualización hereda su licencia del proyecto EGCETSII/decide, ya que es un fork del mismo. Este protecto usa la licencia AGPL-3.0 License. Esto implica que cualquier proyecto que use código de este debe poner a disposición el código fuente completo bajo esta misma licencia. De esta forma, la licencia que usa decide-full-guadalentín-visualización también es GNU Affero General Public License v3.0

Este tipo de licencia copyleft tiene, entre otras, las siguientes condiciones a destacar:

  • Poner a disposición el código fuente completo del proyecto y las modificaciones
  • Deben conservarse los avisos de derechos de autor y licencias.
  • Los contribuyentes proporcionan una concesión expresa de derechos de patente.
  • En caso de proporcionar un servicio a través de una red, el código fuente completo debe estar disponible.
  • Se permite el uso privado y comercial
  • Se permite la distribución y modificación del código bajo las mismas condiciones de licencia.

Proceso definido para el despliegue

Aunque decide se contiene en un entorno de integración continua, el despliegue la aplicación decide se puede realizar en varios entornos.

Despliegue en local

Para el despliegue en local se usarán equipos con sistema operativo Linux. También es posible ejecutarlo con Windows Subsystem for Linux. Es necesario seguir la siguiente guía para preparar el entorno WSL.

Para ejecutar decide, se debe cumplir una serie de requisitos recogidos en el fichero requirements.txt. Los requisitos principales son contar con Python 3 y Django. Es preferible trabajar con entornos virtuales de Python ya que eso ayuda al desarrollo a la hora de pasar a diferentes ramas, ya que algunas ramas pueden tener requisitos de paquetes diferentes al main en algunos momentos del desarrollo.

Para desplegar decide en local, se debe seguir el apartado “Configurar y ejecutar el proyecto” en el fichero README.md de la liberación correspondiente. Previamente debemos haber instalado una base de datos en nuestro equipo para que la aplicación funcione correctamente. Para crear una base de datos con postgres se deben seguir los siguientes pasos:

sudo su -postgres

psql-c "createuserdecide with password'decide'"

psql-c "createdatabasedecide ownerdecide"

Se debe crear un fichero local_settings.py que contenga la información de la base de datos que acabamos de crear. También hay que tener en cuenta que la URL de la base de datos será localhost en este fichero. Tras esto, el primer paso antes de ejecutar decide sería hacer las migraciones con el fichero manage.py contenido en la carpeta decide, y posteriormente crear el superusuario.

python3 ./manage.py migrate

python3 ./manage.py makemigrations

python3 ./manage.py createsuperuser

Tras estos pasos podemos lanzar decide en local como cualquier aplicación de django:

python3 ./manage.py runserver

Despliegue en máquinas virtuales.

De forma análoga, es posible desplegar decide en una máquina virtual. Es importante abrir los puertos correspondientes en la máquina virtual para permitir el acceso a la aplicación. También es posible hacer uso de Vagrant y Ansible.

Despliegue en contenedores

Otra forma de desplegar decide es haciendo uso de contenedores. Es posible ejecutar decide con Docker o Podman. De forma análoga al despliegue en local, se puede seguir el apartado “Ejecutar con docker” en el fichero README.mdpara hacer el despliegue mediante contenedores. Es necesario tener instalado Dockeren Windows, Linux o Mac para ejecutar decide en contenedores siguiendo las instrucciones del proyecto. Las instrucciones para instalar en Ubuntu 20.04 se pueden encontrar en la wiki de EGC:

Desinstalamos versiones antiguas:

sudo apt-get remove docker docker-engine docker.io containerd runc

Instalamos dependencias

sudo apt-get update

sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common

Instalamos llave de cifrado

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Añadimos el repositorio

sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"

Instalamos docker

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

Instalamos docker-compose

sudo apt-get install docker-compose

Añadimos nuestro usuario al grupo docker

sudo usermod -aG docker $USER

Despliegue en la nube

Para el despliegue en la nube, hemos usado la herramienta Heroku, ya que es una plataforma como servicio (PaaS) que nos permite desplegar facilmente. La herramienta nos permite desplegar la aplicación desde cualquier rama de Git. En nuestro caso, se ha hecho un despliegue de la rama de visualización para probar el funcionamiento antes de hacer el despliegue de la rama main. Gracias a la integración con GIT es fácil desplegar los cambios realizados en decide. Las liberaciones que se envían a Heroku deben haber pasado todos los test de Travisy Codacy. Al actualizar el main en nuestro repositorio, Travis empezará a analizar la liberación y si pasa todas las pruebas mandará a Heroku el despliegue de la aplicación.

Heroku

Se puede acceder a la aplicación desplegada desde el siguiente enlace: https://guadalentin-visualizacion.herokuapp.com/

El procedimiento para realizar el despliegue con Heroku puede encontrarse en la Wiki de EGC. Es necesario disponer de una cuenta gratuita de Heroku para desplegar la aplicación.

Es importante crear un fichero para guardar los valores del settings para la integración continua con travis como se indica en el apartado Para travis y preparar el fichero .travis.yml Una vez cubiertos todos los requisitos de las guías, el despliegue se realiza desde Heroku CLI con el siguiente comando:

git push heroku master

El primer paso una vez se despliega la aplicación en Heroku es crear un super usuario con el que poder acceder a la consola de administración. Esto se consigue con el siguiente comando:

heroku run -a YOUR APP NAME "sh -c 'cd decide && python manage.py createsuperuser'"

Tras esto, la aplicación está desplegada en la url que hemos creado para el proyecto en Heroku. El siguiente paso sería acceder a la URL y loguearse con el super usuario que acabamos de crear.

Proceso definido para las entregas

Las entregas han sido establecidas por el profesorado del departamento de lenguajes y sistemas informáticos de la universidad de Sevilla, siendo las fechas y objetivos de las mismas los siguientes:

  • M0 Inscripción de los equipos 30 de Octubre
  • M1 Sistema funcionando con incremento 6 de Noviembre
  • M2 Seguimiento 7 de Enero
  • M3 Entrega y defensa de proyectos Semana del 18 de enero
  • M4 Mejoras 5 de Febrero

Tanto para la entrega M3 y M4 se entrega una liberación funcional extraída del repositorio del proyecto egc-guadalentón-decide, junto con la documentación del proyecto y la aplicación decide desplegada tanto en local, en los portátiles de los integrantes, como en la nube, pudiendo acceder desde cualquier navegador.

Política de nombrado e identificación de los entregables

La política de versionado seguirá la siguiente estructura:

X.Y

Donde X representa el milestone en concreto e Y representa el año en el que se realiza el despliegue.

Clone this wiki locally