Saltar al contenido principal

GitLab: migración a VM nueva y upgrade de 15.11 a la última versión

· 32 min de lectura
Franco R.
El chico de software @ sils.tech

Nuestro GitLab self-hosted (gitlab.sils.tech) está en 15.11.5, una versión de mayo de 2023, corriendo sobre Ubuntu 18.04. Para esa versión de Ubuntu no hay paquetes de GitLab posteriores a la 16.11, así que no alcanza con actualizar el paquete: hay que mover GitLab a una VM nueva.

La estrategia es dejar el GitLab actual fuera de servicio y congelado durante la migración. Así nadie puede escribir mientras copiamos los datos y no se pierde nada. La VM vieja queda apagada e intacta como plan de vuelta atrás.

Este post es el plan de trabajo. Los checkboxes se van tildando a medida que avanzamos.

SilsX sin Bootstrap: cómo migramos el frontend al kit propio

· 16 min de lectura
Franco R.
El chico de software @ sils.tech

Actualizado 2026-10-10: la migración quedó terminada en SilsX. Se cerraron la Fase 3 y la Fase 4 (Bootstrap y bootstrap-vue desinstalados, sin prefijo tw: y sin important), y se sumaron aprendizajes nuevos.

El frontend de SilsX (dashboard-k2) nació sobre Bootstrap 4 + bootstrap-vue 2. Desde hace un tiempo convive con un kit de componentes propio en src/components/ui/ (Tailwind 4, puerto Vue 2.7 del design system de SilsX, galería en /#/ui). En septiembre/octubre de 2026 armamos un plan por fases para sacar Bootstrap del todo, y hoy está ejecutado completo: no quedan componentes de bootstrap-vue, ni el paquete bootstrap, ni el prefijo de Tailwind.

Este post cuenta la estrategia, qué se hizo en cada fase, cómo verificamos que nada cambiara visualmente, y los problemas que aparecieron en el camino para que nadie se los vuelva a comer.

Deploy sin claves: chau a las service accounts @appspot en Jenkins

· 8 min de lectura
Franco R.
El chico de software @ sils.tech

Hasta octubre de 2026, todos los pipelines de Jenkins de plataforma y colectores se autenticaban contra GCP con claves JSON de las service accounts por defecto de App Engine (sils-producto-stage@appspot y sils-producto@appspot). Esas claves tenían años, daban Editor en stage y Owner en prod, y terminaban copiadas en workspaces, imágenes Docker y máquinas locales.

Las reemplazamos por impersonación de dos service accounts de deploy con permisos mínimos, sin ninguna clave. Este post cuenta qué cambió, cómo se deploya ahora y los problemas que aparecieron en el camino.

SonarScanner + Java 21: qué rompió al actualizar SonarQube a 2026.4

· 3 min de lectura
Franco R.
El chico de software @ sils.tech

Después de actualizar el SonarQube que corre en nuestro server (como container Docker) a la versión 2026.4, los pipelines de Jenkins que corren análisis de Sonar empezaron a fallar con este error:

ERROR: Error during SonarScanner execution
ERROR: Java 17 is not supported. Please upgrade to Java 21 or newer, or use JRE
auto-provisioning to keep this requirement always up to date.

Reseteo Aibox usando placa

· 3 min de lectura
Franco R.
El chico de software @ sils.tech

Problemática detectada​

Un problema recurrente que sucede con los DVR AIBOX es que en cierto momento dejan de reportar todo tipo de eventos con lo cual perdemos (y pierde el cliente) total visibilidad con el vehículo que contiene el dispositivo. Esto trae aparejado un problema económico contractual que debemos afrontar como proveedores, al menos en el caso YPF.

Mover datos históricos y borrar

· 5 min de lectura
Franco R.
El chico de software @ sils.tech

Al consultar ciertas tablas de MySql notamos que tienen una cantidad excesiva de filas. Acá veremos una forma de hacer una copia de los datos en un dataset de BigQuery por un lado, y por el otro la posibilidad de borrar los datos de MySql.

Guía de Desarrollo Frontend

· 5 min de lectura
Software Bugs generator @ sils.tech

Esta guía establece los patrones arquitectónicos y criterios de desarrollo utilizados en el Dashboard General. Sirve como referencia para mantener consistencia en el desarrollo de nuevas features o vistas similares.

Cleanup old data from datastore

· 5 min de lectura
Franco R.
El chico de software @ sils.tech

Impulsado por la necesidad de reducir costos en Google Cloud Platform me encontré un alto costo en un proyecto relacionado a Cloud Firestore Storage. Analizando el Datastore vi que tenía el siguiente tamaño