Saltar al contenido principal

Renovate Runner

🤖 En una frase. Renovate es un bot que revisa las dependencias de un proyecto y abre Merge Requests automáticamente para actualizarlas cuando sale una versión nueva — así nadie tiene que hacerlo a mano.

📖 Fuente de verdad: el repo wildcat/renovate-runner y su docs/renovate-runner-configs.md. Esta nota documenta cómo consumir el preset compartido desde cualquier repo Wiedii; los internos del runner (Dockerfile, variables de entorno, caché S3, build) viven en el repo y pueden cambiar — no se documentan aquí.

⚠️ Verificar versiones antes de usar — las versiones de la imagen base de Renovate y de las herramientas pueden estar desactualizadas. Ver politicas-core.

Responsable y mantenimiento

El Renovate Runner y sus configuraciones (preset compartido e internos del runner) los audita y mantiene el Tech Lead (TL) actualmente. Si por alguna razón el TL no puede atender estas responsabilidades, el equipo que asume el respaldo es Infraestructura.


¿Qué es?

Renovate Runner cumple dos propósitos:

  1. Preset compartido (.gitlab/renovate.json): la fuente de verdad de las reglas de actualización de dependencias para todos los repositorios de Wiedii. Es lo que cada repo consume.
  2. Runner Dockerizado: la imagen que ejecuta Renovate con configuración empresarial. Sus detalles internos (Dockerfile, variables de entorno, caché S3, build) viven en el repo wildcat/renovate-runner, no en esta nota.

Preset compartido — Cómo consumirlo

Cualquier repositorio de Wiedii debe extender el preset compartido en su renovate.json raíz:

{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["local>wildcat/renovate-runner//.gitlab/renovate.json"]
}

¿Qué significa local>?

Le indica a Renovate que cargue el preset desde un repositorio en la misma plataforma Git (GitLab). El formato es:

local><namespace>/<proyecto>//<ruta>

Para Wiedii, el preset vive en:

  • Repositorio: wildcat/renovate-runner
  • Ruta del archivo: /.gitlab/renovate.json

Requisito: Renovate debe tener acceso de lectura al repositorio wildcat/renovate-runner.

📄 Documentación interna completa del preset: https://gitlab.wiedii.co/wildcat/renovate-runner/-/blob/main/docs/renovate-runner-configs.md


¿Qué incluye el preset compartido?

Gestores personalizados (customManagers)

El preset detecta y actualiza automáticamente versiones de herramientas que los managers estándar de Renovate no cubren:

HerramientaArchivos detectadosFuente
bunpackage.json, renovate.jsonGitHub Releases (oven-sh/bun)
pnpmpackage.json, renovate.jsonnpm
yarnpackage.json, renovate.jsonnpm
npmpackage.json, renovate.jsonnpm
Node.jspackage.json, renovate.jsonnode datasource
PHPcomposer.json, renovate.jsonGitHub Tags
Pythonrenovate.jsonDocker
uvrenovate.jsonGitHub Releases (astral-sh/uv)
Terraformrenovate.json, root.hcl, *.tfGitHub Releases
Terragruntrenovate.json, root.hclGitHub Releases
TFLintrenovate.jsonGitHub Releases
Checkovroot.hclPyPI
Imagen Renovate*.md, .cursorrulesDocker (con digest)
Bun/Node en docs*.mdGitHub Releases / node

Políticas de seguridad

  • rangeStrategy: "pin" — todas las dependencias se pinnean a versiones exactas.
  • minimumReleaseAge: "3 days" — espera 3 días antes de actualizar (evita paquetes maliciosos recién publicados).
  • pinDigests: true para imágenes Docker.
  • rollbackPrs: true — crea PRs de rollback si una versión es inestable.
  • Integra OpenSSF Scorecard y npm minimum release age vía presets de seguridad.
  • config:best-practices como base.

Agrupaciones de actualizaciones

Las actualizaciones se agrupan en ramas únicas para reducir el ruido:

GrupoIncluye
Terraform and TerragruntTerraform, Terragrunt (source URLs + aqua en mise)
Bun Version Updateoven-sh/bun
Pnpm / Yarn / NPMGestores de paquetes JS
Go runtime/toolingImágenes golang, mise go/golang
Uv Version Updateastral-sh/uv
Lefthook / Hadolint / Shfmt / ShellcheckHerramientas de dev
Terraform Module UpdatesMódulos Terraform
Wiedii Registry UpdatePaquetes @wiedii-registry/*
Checkov Version Updatecheckov (uvx)
wiediiregistry-phpImagen custom PHP de Wiedii

Otras configuraciones notables

  • dependencyDashboard: true — dashboard de Renovate activo en GitLab.
  • baseBranchPatterns: ["develop"] — rama base es develop.
  • semanticCommits: "enabled" con scope workspace.
  • configMigration: true — migra automáticamente configs obsoletas.
  • postUpdateOptions: deduplicación de yarn, pnpm, npm; inflación de Helm; etc.
  • ignorePresets: monorepo:terraform, group:terraformMonorepo (se usan reglas propias).
  • Paths ignorados: .terragrunt-cache/, node_modules/, mise.toml.original*.

Overrides en repositorios consumidores

Los repositorios pueden añadir reglas sin romper el preset compartido:

{
"extends": ["local>wildcat/renovate-runner//.gitlab/renovate.json"],
"packageRules": [
{ "enabled": false, "matchPackageNames": ["terraform-aws-modules/vpc/aws"] }
]
}

El preset compartido es la fuente de verdad para reglas empresariales. Solo se añaden overrides locales cuando el proyecto tiene necesidades específicas. Ver renovate para más detalle y troubleshooting del consumo por proyecto.


Recomendación: integrar primero los MR más antiguos

Recomendación, no obligación. Renovate suele tener varios MR abiertos a la vez. Conviene integrarlos del más antiguo al más nuevo según su fecha y hora de actualización completa (updated_at, con precisión de segundos — no solo el día), no la de creación. Antes de mezclar cada MR, actualizar su rama con la rama por defecto del proyecto (develop o main, según el default configurado) mediante rebase. Renovate rebasa automáticamente los MR que sigan abiertos cuando cambia la rama base, así que integrar primero el de actualización más antigua deja que actualice o cierre el resto por sí solo, reduce los conflictos en cascada y evita acumular MR de dependencias estancados. Ver git-flow.


Referencias