Compilación y publicación automática de la pizarra

Como desarrollador independiente de software me es menester liberarme de ciertas cargas burocráticas relacionadas con el software mismo. En esta ocasión me tocó automatizar la compilación y publicación de la pizarra para dos de sus canales de distribución: archlinux (mediante los paquetes de AUR pizarra-bin y pizarra-git) y ubuntu/debian mediante un archivo .deb.

Hasta hace unos minutos el proceso lo realizaba a mano (con un script de bash, pero que ejecutaba a mano y que compilaba dentro de mi propia máquina) pero al querer añadir el canal de distribución para Debian/Ubuntu me topé con el problema de que mi sistema operativo (Manjaro) provee una versión de glib más nueva que la que provee Ubuntu. Luego entonces los binarios que produzco no se pueden utilizar entre estas dos plataformas y ese fue el momento en que me di cuenta de que no podía postergar un minuto más la producción automática de los artefactos, y de paso de su publicación.

Lo que se muestra a continuación es un YAML para Gitlab CI que configura un proceso de cuatro etapas donde se logra lo siguiente:

  • Generar un binario de la pizarra desde ubuntu con una versión aceptable de glib.
  • Generar un archivo comprimido .tar.gz con todos los artefactos necesarios para una distribución a un linux arbitrario.
  • Generar un archivo .deb para Debian/Ubuntu.
  • Calcular las sumas sha256 de los dos artefactos previos.
  • Publicar estos archivos en mi servidor.
  • Actualizar el PKGBUILD de pizarra-bin y publicarlo.
  • Actualizar el PKGBUILD de pizarra-git y publicarlo.

Para lograr esto necesité dos imágenes nuevas de docker, una que sería el entorno de construcción (basada en ubuntu, con rust y gtk), y otra que sirve para actualizar los paquetes de arch (basada en archlinux y con git y ssh instalados).

Sin más ni más, presento aquí los recursos:

El Yaml que coordina todos los pasos

https://gitlab.com/categulario/pizarra-gtk/-/blob/master/.gitlab-ci.yml

El dockerfile para construir con rust + gtk en ubuntu y empaquetar para debian y derivados

https://gitlab.com/categulario/pizarra-ci-image

El dockerfile para regenerar los paquetes pizarra-bin y pizarra-git de archlinux

https://gitlab.com/categulario/ci-arch-image