Herramientas de desarrollo: versiones y upgrades
Versiones de las herramientas self-hosted que usa el área de desarrollo y cuándo se actualizó cada una. Actualizado al 26/10/2026.
Resumen
| Herramienta | URL | Versión actual | Último upgrade | Dónde corre |
|---|
| Jenkins | jenkins.sils.tech | 2.580.1 LTS (Java 25) | 19/10/2026 | Container en VM sils-dev-no-spot |
| SonarQube | sonar.sils.tech | 2026.5.3 LTA Developer Edition | 26/10/2026 | Container en VM sils-dev-no-spot |
| Nexus | nexus.sils.tech | 3.97.2 Community Edition (Java 21), base en PostgreSQL | 26/10/2026 | Container en VM sils-dev-no-spot |
| GitLab | gitlab.sils.tech | 19.5.1 EE (sin licencia, funciones Free) | 22/10/2026 | VM gitlab-v2 (Omnibus) |
| GitLab Runner | — | 19.5.0 | 22/10/2026 | VM gitlab-runners |
| Grafana | grafana.sils.tech | 13.2.4 | 26/10/2026 | Container en VM sils-monitor |
| Silstech Docs | docs.sils.tech | Docusaurus 3.10.1 | 26/10/2026 (cambio de proyecto) | Firebase Hosting y Cloud Functions |
Todo está en el proyecto GCP sils-keeper-infra, zona us-central1-a. Jenkins, SonarQube y Nexus se levantan con Docker Compose desde /sils-dev/dev-infra/docker-compose.yml. Su copia en el repo dev-infra es docker-compose-example.yml.
Jenkins
| Fecha | Versión | Notas |
|---|
| 11/03/2022 | 2.319.3 LTS (Java 11) | Instalación inicial con Docker Compose. |
| sin registrar | 2.354, 2.400 (Java 11) | Upgrades intermedios. Solo quedaron como líneas comentadas en el compose. |
| sin registrar | 2.513 (Java 21) | Cambio a Java 21. |
| antes del 07/09/2026 | 2.569 (Java 21) | Desde esta versión los agentes también necesitan Java 21. |
| 19/10/2026 | 2.580.1 LTS (Java 25) | Vuelta a la línea LTS. El controller pasa a Java 25; los agentes GCE siguen en Java 21. |
- Imagen:
jenkins/jenkins:2.580.1-lts-jdk25.
- La configuración se edita a mano en
/var/jenkins_home (no se usa JCasC). Permisos y carpetas: ver Permisos y config files.
SonarQube
| Fecha | Versión | Notas |
|---|
| 11/03/2022 | lts (8.9 LTS) | Instalación inicial, con PostgreSQL en un container. |
| sin registrar | 10.7.0, 2025 LTA | Upgrades intermedios. |
| antes del 04/08/2026 | 2026.4.0 | Rompió los scanners viejos que traían Java 17 (ver el post). |
| 13/10/2026 | 2026.5.2 LTA | La base de datos pasa a Cloud SQL pg-keeper-instance (PostgreSQL 14). |
| 26/10/2026 | 2026.5.3 LTA | pg-keeper-instance sube de PostgreSQL 14 a 17 (Sonar 2026.5 ya no soporta la 14). |
| 26/10/2026 | 2026.5.3 LTA | Parche de seguridad. Se agregó sonar.secretKeyPath para cifrar los secretos guardados en la base. |
- Imagen:
sonarqube:2026.5.3-developer. Java 25, incluido en la imagen.
- La clave de cifrado está en
/sils-dev/dev-infra/config/sonar/sonar-secret.txt, con backup en Secret Manager (sonarqube-secret-key, proyecto sils-keeper-infra). Si se pierde, no se pueden descifrar los secretos guardados, como el token de GitLab.
- Base de datos: Cloud SQL
pg-keeper-instance, PostgreSQL 17 desde el 26/10/2026. Antes de cada upgrade: sacar un backup bajo demanda de esa instancia.
- Para que Sonar comente en los MRs de GitLab, los proyectos tienen que analizarse con
@sonar/scan 5 o superior. Los paquetes sonarqube-scanner 2.x y 3.x traen Java 17 y fallan.
Nexus
| Fecha | Versión | Notas |
|---|
| 11/03/2022 | 3.25.0 | Instalación inicial. |
| 07/09/2026 | 3.79.1 | La base H2 se corrompió el 20/08/2026 y se recreó; desde entonces el scheduler de tareas no arranca (ver abajo). |
| 26/10/2026 | 3.97.2 Community Edition | Upgrade directo. Migró la base H2 (schema v2.15 → v2.174). Desde la 3.97 la telemetría a Sonatype es obligatoria. |
| 26/10/2026 | 3.97.2 | La base pasa de H2 embebida a PostgreSQL (Cloud SQL pg-keeper-instance, base nexus), con el Database Migrator oficial. |
- Imagen:
sonatype/nexus3:3.97.2. Los blobs (archivos de los paquetes) siguen en el disco de la VM, en /apps/nexus-data/blobs.
- Base de datos: Cloud SQL
pg-keeper-instance, base y usuario nexus. La password está en /sils-dev/dev-infra/.env (NEXUS_DB_PASSWORD) y en Secret Manager (nexus-db-password). Pool de conexiones limitado a 20 con NEXUS_DATASTORE_NEXUS_ADVANCED=maximumPoolSize=20 (por defecto abre 100).
- Telemetría: si no está aceptada, Nexus devuelve 403 en todas las descargas de paquetes (los metadatos sí responden). El aceptarla no se migra de H2 a PostgreSQL: después de una migración hay que aceptarla de nuevo en la UI.
- Vuelta atrás a H2: la base H2 y los restos de OrientDB se archivaron en
/apps/nexus-legacy-db-20261026 (fuera de /apps/nexus-data). Para volver, copiar db/nexus.mv.db.migrated-to-postgres-20261026 a /apps/nexus-data/db/nexus.mv.db (dueño uid 200) y sacar las variables NEXUS_DATASTORE_NEXUS_* del compose.
- Backup previo al upgrade:
/apps/nexus-data-backup-3.79.1-20261026-1339.tgz (con Nexus apagado). Sonatype no soporta downgrade; para volver hay que restaurar ese backup y la imagen 3.79.1.
- Límites de la Community Edition: 40.000 componentes o 100.000 pedidos por día. Hoy usamos muy por debajo (unos cientos de pedidos por día).
- Scheduler de tareas: estuvo caído desde la corrupción del 20/08/2026 hasta el 26/10/2026 (
invalid stream header al leer 8 tareas dañadas en las tablas QRTZ_*). Se arregló borrando esas tareas de la base con Nexus apagado. La tarea compact blob store (blob store default, domingos 06:00 UTC) se recreó a mano.
- Registry npm privado:
https://nexus.sils.tech/repository/npm-internal (paquetes @silstech/*).
GitLab
| Fecha | Versión | Notas |
|---|
| hasta 22/10/2026 | 15.11.5 EE | VM gitlab con Ubuntu 18.04 y PostgreSQL 14 en Cloud SQL (pg-keeper-instance). La base vieja se exportó el 26/10/2026 a gs://sils-gitlab-backups/legacy/ antes de subir esa instancia a PostgreSQL 17, así que ya no se puede volver a la VM vieja. |
| 22/10/2026 | 19.5.1 EE | Migración a una VM nueva (gitlab-v2, Ubuntu 22.04) con upgrades encadenados. La base pasa a Cloud SQL pg-gitlab (PostgreSQL 17). Detalle completo en el post de la migración. |
- Runners: VM
gitlab-runners, gitlab-runner 19.5.0 (antes 17.0.0, en la misma VM que GitLab).
- Backups: diarios a
gs://sils-gitlab-backups, más snapshots del disco de la VM.
Grafana
| Fecha | Versión | Notas |
|---|
| antes del 15/04/2025 | 10.2.0 | Fecha exacta sin registrar. Ya estaba en esta versión en las copias del compose del 15/04/2025. |
| 26/10/2026 | 13.2.4 | Upgrade directo, probado antes sobre una copia de los datos. Grafana 12 eliminó Angular: los paneles viejos (graph, table-old, singlestat) de 4 dashboards se convierten solos a timeseries, table y stat. Se actualizaron los plugins BigQuery 3.4.6, Infinity 4.1.3, Cloud Logging 1.8.1 y JSON 1.4.3. |
- Imagen:
grafana/grafana:13.2.4. Base SQLite en el volumen Docker monitoring_grafana_data. Login con GitLab (OAuth).
- Backups previos al upgrade en
/monitoring-backups/ de la VM (base con sqlite3 .backup, resto del volumen y configuración). Para volver a la 10.2.0 hay que restaurar la base de ese backup: la 13 migra el schema.
- Plugins: se actualizan con
grafana cli plugins update-all (BigQuery e Infinity exigen Grafana 12 o superior).
- Corre en la VM
sils-monitor (Debian 11) con Docker Compose, desde /monitoring/docker-compose.yml. El compose y la config están versionados en silsv2/devs/monitoring.
- Ojo con ese repo: cada push a
master dispara un deploy que arma grafana.ini, datasources.yml y prometheus.yml desde variables de CI, los copia a /monitoring y reinicia la VM. El deploy no corre docker compose up, así que no aplica cambios de imagen. Antes de pushear sin [skip ci], verificar que las variables de CI coincidan con los archivos del server.
- En el mismo compose corren:
- Prometheus
prom/prometheus:v3.1.0.
- Tempo
grafana/tempo:2.7.2 (fijado el 26/10/2026; antes usaba latest).
Silstech Docs
| Fecha | Proyecto GCP | Notas |
|---|
| hasta 26/10/2026 | sils-auth-dev | Compartía proyecto (y pool de usuarios de Firebase Auth) con el login de des.sils.com.ar. |
| 26/10/2026 | sils-keeper-infra | Hosting, Auth y las Functions mcp y gitlab pasan a un proyecto propio de infra. Los usuarios de docs se recrean solos al loguearse. |
- Repo: silsv2/devs/sils-docs. Cada push a
master corre firebase deploy (Hosting y Functions) con la SA docs-deployer@sils-keeper-infra.
- Servidores MCP:
https://us-central1-sils-keeper-infra.cloudfunctions.net/mcp (docs) y .../gitlab. El login OAuth usa un OAuth client que sigue en sils-auth-dev; sus redirect URIs son .../mcp/oauth/callback y .../gitlab/oauth/callback.
- Custom domain
docs.sils.tech: registros A 199.36.158.100 y TXT hosting-site=sils-keeper-infra, sin CNAME (un CNAME impide que Firebase lea el TXT de verificación).
Cómo mantener este doc
Cada vez que se actualice una herramienta:
- Agregar una fila en la tabla de historial de esa herramienta, con la fecha y lo que cambió.
- Actualizar la tabla de resumen.
- Para Jenkins, SonarQube y Nexus, actualizar también la imagen en
docker-compose-example.yml del repo dev-infra. Dejar la versión anterior comentada.