Manuales de desarrollo de YeboYebo
El despliegue automático consta de dos partes principales:
Crear la rama y la Github action
Crear
Creamos la rama en github a partir de master [NombreApp]_Produccion.
Guanabana_Produccion
El fichero describe las acciones a realizar cuando se haga un commit sobre la rama de despliegue.
En codebase/.github/workflows/
creamos un nuevo fichero Deploy_[NombreApp].yml a partir del fichero Deploy_Plantilla.yml.template:
Deploy_Plantilla.yml.template
> Deploy_Guanabana.yml
Modificamos el fichero con los datos del despliegue:
[NombreApp]
> Guanabana
[nombre_rama]
> fun_guanabana
[nombre]
> guanabana
deploy-to-cluster
.Checks:
El fichero Dockerfile
En codebase/.despligue
creamos un nuevo fichero Dockerfile_[NombreApp] a partir del fichero Dockerfile_Plantilla
Dockerfile_Plantilla
> Dockerfile_Guanabana
[nombre_rama]
> fun_guanabana
Checks:
name: Build and push > _file_
del fichero de github asociado Deploy_[Aplicacion].ymlCreamos en dockerhub (hub.docker.com (claves en bitwarden)) el respositorio privado pinebooapi_[nombre]
(p.e. pinebooapi_sanhigia). El nombre del repositorio (pinebooapi_guanabana en este ejemplo) debe ser el que se indica en la clave Build and push
> tags
del fichero Deploy_[aplicacion].
El despliegue en local es el que haremos sobre un servidor del cliente
En la carpeta de despliegue del servidor delcliente debemos incluir:
.env
con los valores de environment necesarios. Cambiar del fichero .env estos valores respecto del fichero de desarrollo: + (parámetros de acceso a la BD)
+ PINEBOODIR=/src/pineboo/
+ MODULESDIR=/src/codebase/extensiones_2.5.0/fun_jsenar/build/final/
+ FLFILES_FOLDER=/src/codebase/extensiones_2.5.0/fun_jsenar/build/final/
+ EXTERNAL_MODULES=/src/codebase/olula
+ PROJECT_NAME=[nombre de la carpeta del cliente en olula/apps]
despliegue_local.sh
que tenemos en codebase/despliegue
, cambiando:
[nombre]
por guanabana
, p.e. REPO=yeboyebohub/pinebooapi_guanabana
Hacemos un push de la rama [NombreApp]_Produccion
.
Esperamos a que las acciones terminen en github.
Entramos en hub.docker.com y para el reposiorio de despliegue copiamos el TAG asociado a la última subida (push). Para ello pulsamos en el enlace de la subida y sacamos el tag del título de la página:
Ejemplo: yeboyebohub/pinebooapi_guanabana:a53dc48bd5efd3ecd4b7fa7db212fbdee6b792e3
> Tag = a53dc48bd5efd3ecd4b7fa7db212fbdee6b792e3
En el servidor del cliente:
Miramos si hay un docker levantado y si existe lo mataremos:
docker ps
Si no hay un docker levantado nos devolverá:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Si hay un docker levantado nos devolverá algo así:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31257e34eae7 yeboyebohub/pinebooapi_guanabana:latest "/bin/bash -c '/usr/…" 5 days ago Up 5 days 8080/tcp, 0.0.0.0:8080->8000/tcp, :::8080->8000/tcp goofy_haibt
Nos fijaremos en el CONTAINER ID para matarlo:
docker kill 31257e34eae7
Accedemos a la carpeta de despliegue del cliente y lanzamos el sh de despliegue.
sh despliegue_local.sh [TAG]
La primera vez deberemos introducir el usuario y login de dockerhub
Si tras lanzar el despliegue no aparece la imagen con docker ps, podemos ver qué ha fallado entrando en modo interactivo:
docker run -p 8080:8000 --expose 8080 --env-file .env -it --entrypoint /bin/bash yeboyebohub/pinebooapi_hispanicfiber:latest
Y ejecutando dentro del contenedor:
python3 app/manage.py runserver 0.0.0.0:8000
Para ver el log entramos en la consola de docker:
docker ps
(obtenemos el CONTANIER_ID)
docker exec -it CONTAINER_ID /bin/bash
Una vez en la consola de docker usamos tail, cat, etc para ver el fichero en app/logs/yebo.log
.
$ tail -n 100 app/logs/yebo.log
Podemos realizar búsquedas dentro del fichero de log estando dentro de la carpeta logs:
yeboyebo@31257e34eae7:/src/app/logs$ grep palabra_a_buscar $(find . -name .log)
Salimos de la consola con exit
$ exit
Podemos traernos el log a nuestro equipo de la siguiente forma:
docker cp nombre_docker:/src/app/logs/yebo.log .
Para reiniciar, podemos usar el script sin indicar la etiqueta:
sh despliegue_local.sh
Como alternativa, podemos también matar el docker como se describe en Ver el log de pinebooapi en local y luego lanzar la última línea del script de despliegue local.