Creación de artifacts ===================== Para empujar los artifacts con las últimos cambios del software, tenemos la herramienta con la que se puede hacer over-the-air software updates, `Mender `_. Mender nos da la facilidad de poder crear cualquier tipo de artifact (scripts, archivos, paquetes Debian) y poder empujarlos a los diferentes dispositivos que necesecitemos. Esto hace que la propagación de los cambios y las mejoras al software se haga de manera limpia y segura. Hemos optado por crear paquetes de Debian para poder controlar mejor la pre y post instalación en cuanto una actualización es empujada. De esta manera los scripts hacen los cambios necesarios para instalar el nuevo software y automatizar el *rolling back* por si la instalación lo requiere. La compilación del software es creada por la imagen de docker en el directorio `docker/compilacion`. Esta imagen creada a partir de un filesystem de `raspios bullseye`, baja el repositorio de *skydevice* en la versión que necesitemos y hace la compilación dependiendo de algunos factores que serán descritos más tarde. Al finalizar la ejecución del docker, los archivos generados (carpetas de compilación y archivos *.deb*) serán subidos al bucket de AWS correspondiente. Los diferentes factores para crear la compilación son los siguientes: * GITLAB_TOKEN: Es el token para poder clonar el repositorio. * CHECKOUT_TO: Aquí podemos cambiar la rama en la que queremos hacer la compilación. * AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY: Son las crendenciales para poder subir los archivos al bucket de AWS * MAVROS_COMPILATION: Si la variable es yes, crea una compilación de MAVROS nueva. Por default la descarga de un bucket para que la compilaciónea sea mucho más rápida. * DEBUG_COMPILATION: Si la variable es yes, crea los símbolos para poder hacer debug con `gdb`. Un pequeño ejemplo del como es que se puede ejecutar es el siguiente: .. code-block:: bash docker run -d --rm -e GITLAB_TOKEN= -e CHECKOUT_TO= -e AWS_ACCESS_KEY_ID= -e AWS_SECRET_ACCESS_KEY= \ -e DEBUG_COMPILATION= -e MAVROS_COMPILATION= robox_compilation:v0.0.5 Mender ------ La creación del artifact para la plataforma de Mender es iomportante, pues ellos tienen su propio formato de archivo para empujar. Necesitaremos la herramienta `mender-artifact `_ la cual ejecutaremos para crear el archivo *artifact.mender*, el cual subiremos a la plataforma. Una vez que tengamos la herrmienta ejecutaremos el siguiente comando. .. code-block:: bash mender-artifact write module-image -T deb -t tipo_de_dispositivo -f archivo.deb -n nombre_del_artifact Con la ejecución del comando obtendremos un archivo *artifact.mender* el cual subiremos a la plataforma en el área de *Releases*. En el momento en el que se decida empujar una nueva actualización, cualquier *Release* se puede escoger dependiendo el tipo de dispositivo.