Del Caos al Control: transforma tus Actualizaciones con Updatecli


Automatiza tus upgrades como un verdadero equipo.
📈 Aumenta la frecuencia de actualizaciones, reduce errores humanos y elimina la deuda técnica silenciosa.
😫 El punto de quiebre
Imaginá esto:
Un equipo DevOps tratando de mantener actualizado todo el ecosistema. Imágenes Docker, versiones de Helm charts, manifiestos YAML, archivos de configuración… cada uno con su propio ritmo, su propio repositorio y su propia urgencia.
Lo que en teoría eran simples actualizaciones, en la práctica se convertían en:
Calendarios saturados con tareas repetitivas
Coordinación interminable por Slack
Revisiones manuales con riesgo de error
Dificultades para escalar nuevas integraciones
Y lo peor: el trabajo no era visible para todos, lo que generaba fricción entre equipos de desarrollo, operaciones y plataforma.
🔍 La búsqueda de una solución
Necesitábamos algo que:
Detecte automáticamente cambios de versión
Aplique esas actualizaciones en múltiples repos
Cree pull requests automáticos y trazables
Se integre con nuestros flujos CI/CD
Fuera transparente para todo el equipo
Ahí apareció: Updatecli.
🚀 ¿Qué es Updatecli?
Updatecli es una herramienta de automatización de cambios declarativos.
Permite definir, con archivos YAML, reglas para buscar nuevas versiones y aplicar esos cambios donde sea necesario: en Dockerfiles, Helm, YAMLs, Markdown, CI/CD, etc.
🔁 ¿Qué hace por nosotros?
Detecta cambios: Nuevas versiones de imágenes, tags, artefactos
Actualiza automáticamente archivos claves en nuestros repos
Abre pull requests con los cambios y el contexto necesario
Se ejecuta como job CI/CD o vía cron en runners compartidos
🛠️ Cómo lo usamos
Creamos pipelines Updatecli en nuestros repos para:
Mantener sincronizadas las versiones de imágenes Docker en los Helm charts
Actualizar configuraciones compartidas en múltiples servicios
Detectar y proponer PRs cuando hay nuevas versiones en nuestras herramientas base
Facilitar upgrades en cascada, sin intervención manual
Un ejemplo simplificado:
sources:
dockerTag:
kind: docker
image: ghcr.io/myorg/my-service
tagfilter: '^v'
targets:
valuesYaml:
kind: yaml
file: charts/my-service/values.yaml
key: image.tag
sourceid: dockerTag
Este ejemplo detecta la última imagen publicada y actualiza el values.yaml
. El PR lo crea Updatecli solito. 🎯
📈 Impacto real
Desde que integramos Updatecli:
Resultado | Antes | Ahora |
Tiempo de actualización por repo | ~2 días | ~15 minutos |
Tareas manuales por semana | +30 | <5 |
Coordinación por Slack | Constante | Casi nula |
PRs automáticos por semana | 0 | +20 |
Errores por inconsistencias | Frecuentes | Muy raros |
🔄 Transformación cultural
Lo más poderoso no fue solo la herramienta, sino lo que cambió en la cultura:
✔️ De tareas manuales invisibles → a flujos automatizados y visibles
✔️ De depender de un experto → a empoderar a cualquier desarrollador
✔️ De retrabajo constante → a flujos reproducibles y documentados
Updatecli nos ayudó a escalar la operación sin escalar el caos.
💬 Lo que antes eran mensajes en Slack…
"Che, ¿actualizaste la versión de esa imagen?"
"¿Cuál es la versión que deberíamos usar endev
?"
"¿Por qué no subió aprod
si ya estaba enmain
?"
Ahora son PRs automáticos con contexto, trazabilidad y revisiones claras.
🧠 Lo que aprendimos
📌 Automatizar no es reemplazar personas.
👉 Es liberar tiempo para tareas que realmente agregan valor.
📌 No hay DevOps sin visibilidad y consistencia.
👉 Updatecli refuerza ambos pilares.
📌 La escalabilidad de un equipo está atada a su capacidad de automatizar.
👉 ¡Y ahora estamos listos para escalar!
Porque automatizar no es solo un lujo. Es una necesidad para escalar.
⚡ Quick Start: Probá Updatecli en minutos
🚧 Requisitos
Instalar Updatecli desde GitHub
Tener un archivo YAML que quieras actualizar (ej:
data.yaml
)Definir un manifiesto
manifest.yaml
📁 Escenario
Vamos a actualizar un archivo YAML (data.yaml
) que contiene la etiqueta de imagen Docker para Jenkins:
# data.yaml
container:
image: jenkinsci/jenkins
tag: 2.275
🧬 Manifiesto de Updatecli
Este archivo manifest.yaml
contiene:
Source: cómo obtener la nueva versión de Jenkins
Condition: verificar que esa imagen existe en DockerHub
Target: actualizar el archivo si es necesario
name: QuickStart example
sources:
jenkinsVersion:
name: Get the latest Jenkins weekly version
kind: jenkins
spec:
release: weekly
conditions:
dockerimage:
name: Is Jenkins weekly tag published on DockerHub
kind: dockerimage
spec:
image: jenkins/jenkins
targets:
dataFile:
name: Bump Jenkins Docker Image Tag
kind: yaml
spec:
key: container.tag
file: data.yaml
🏃 Ejecutar Updatecli
Usá estos comandos desde tu terminal:
- Para ver qué cambiaría:
updatecli diff --config manifest.yaml
- Para aplicar el cambio:
updatecli apply --config manifest.yaml
🔁 ¡Y listo! En minutos, podés tener tus archivos actualizados sin intervención manual.
🚀 Automatizando con GitHub Actions
Repositorio: roxs-updatecli-actions
Usamos Updatecli en un workflow semanal para mantener actualizado el chart de NGINX Ingress:
on:
schedule:
- cron: '0 7 * * 1'
workflow_dispatch:
Update automático del chart:
sources:
chartVersion:
kind: helmchart
spec:
url: https://kubernetes.github.io/ingress-nginx
name: ingress-nginx
targets:
updateChart:
kind: file
spec:
file: applications/ingress-nginx/deploy.sh
matchpattern: CHART_VERSION=.*
replacepattern: CHART_VERSION={{ source "chartVersion" }}
actions:
createPR:
kind: github/pullrequest
title: 'Actualizar NGINX Ingress a versión {{ source "chartVersion" }}'
🔁 Cada semana, Updatecli verifica nuevas versiones y genera un PR automático con el cambio.
🔚 Conclusión: Automatizar para liberar, escalar para transformar
Porque en DevOps, escalar no significa trabajar más.
Significa trabajar mejor.
Y para eso, la automatización ya no es una opción. Es el camino.
🎯 Si querés un equipo más ágil, enfocado y feliz, empezá por liberarles del caos.
Y dejá que Updatecli haga la magia detrás de escena.
Subscribe to my newsletter
Read articles from Rossana Suarez directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Rossana Suarez
Rossana Suarez
Soy Roxs 👩💻| Software Developer | DevOps | DevSecOps | en @295DevOps 🖼 Content Creator. No se puede crecer si no estas dispuesto a saltar a la zona de peligro 🔥