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-runnery sudocs/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:
- 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. - 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:
| Herramienta | Archivos detectados | Fuente |
|---|---|---|
| bun | package.json, renovate.json | GitHub Releases (oven-sh/bun) |
| pnpm | package.json, renovate.json | npm |
| yarn | package.json, renovate.json | npm |
| npm | package.json, renovate.json | npm |
| Node.js | package.json, renovate.json | node datasource |
| PHP | composer.json, renovate.json | GitHub Tags |
| Python | renovate.json | Docker |
| uv | renovate.json | GitHub Releases (astral-sh/uv) |
| Terraform | renovate.json, root.hcl, *.tf | GitHub Releases |
| Terragrunt | renovate.json, root.hcl | GitHub Releases |
| TFLint | renovate.json | GitHub Releases |
| Checkov | root.hcl | PyPI |
| Imagen Renovate | *.md, .cursorrules | Docker (con digest) |
| Bun/Node en docs | *.md | GitHub 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: truepara 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-practicescomo base.
Agrupaciones de actualizaciones
Las actualizaciones se agrupan en ramas únicas para reducir el ruido:
| Grupo | Incluye |
|---|---|
| Terraform and Terragrunt | Terraform, Terragrunt (source URLs + aqua en mise) |
| Bun Version Update | oven-sh/bun |
| Pnpm / Yarn / NPM | Gestores de paquetes JS |
| Go runtime/tooling | Imágenes golang, mise go/golang |
| Uv Version Update | astral-sh/uv |
| Lefthook / Hadolint / Shfmt / Shellcheck | Herramientas de dev |
| Terraform Module Updates | Módulos Terraform |
| Wiedii Registry Update | Paquetes @wiedii-registry/* |
| Checkov Version Update | checkov (uvx) |
| wiediiregistry-php | Imagen custom PHP de Wiedii |
Otras configuraciones notables
dependencyDashboard: true— dashboard de Renovate activo en GitLab.baseBranchPatterns: ["develop"]— rama base esdevelop.semanticCommits: "enabled"con scopeworkspace.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 (developomain, 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
- Documentación interna del preset (fuente de verdad): https://gitlab.wiedii.co/wildcat/renovate-runner/-/blob/main/docs/renovate-runner-configs.md
- renovate — política de actualizaciones automáticas (cómo consume cada repo el preset)
- Renovate Docs: https://docs.renovatebot.com/