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:

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.

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.