Dependabot

Por: Artiko
githubdependabotsupply-chainseguridad

Dependabot

Dependabot es el sistema de GitHub que mantiene tus dependencias al día abriendo pull requests automáticamente. Tiene dos modos que conviene no confundir: version updates (proactivo: te sube versiones aunque no haya ningún problema) y security updates (reactivo: responde a vulnerabilidades conocidas). El primero se configura con un archivo; el segundo viene activo por defecto en repos públicos.

El archivo dependabot.yml

Para los version updates creás dependabot.yml (o .yaml) dentro de .github/, en la rama por defecto del repositorio. La clave version: 2 es obligatoria y define el formato del archivo.

Dentro va la sección updates:, una lista donde cada entrada describe un ecosistema en una ruta. Los tres campos obligatorios de cada entrada son:

CampoObligatorioQué define
package-ecosystemEl gestor de paquetes: npm, docker, bundler, pip, cargo, composer, maven, gradle, github-actions, entre otros
directoryRuta del manifest (ej. / para la raíz). Usá directories para varias rutas
schedule.intervaldaily, weekly o monthly

Campos opcionales útiles:

CampoPara qué
open-pull-requests-limitMáximo de PRs abiertos simultáneamente por ecosistema
groupsAgrupar varias actualizaciones en un solo PR (menos ruido)
ignoreExcluir dependencias o rangos de versión
versioning-strategyCómo actualizar los rangos del manifest
labels / reviewersEtiquetas y revisores automáticos en cada PR
target-branchAbrir los PRs contra otra rama distinta a la default

Un detalle que suele pasarse por alto: el ecosistema github-actions mantiene actualizadas las versiones de las Actions que usás en tus propios workflows. Es la forma recomendada de no quedarte con un actions/checkout@v3 viejo para siempre.

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 5
    groups:
      dependencias-dev:
        dependency-type: "development"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

Este ejemplo revisa semanalmente las dependencias npm (agrupando las de desarrollo en un solo PR) y las versiones de las Actions usadas en los workflows.

Security updates

Los security updates son otra cosa. Se disparan a partir de las alertas de Dependabot: cuando GitHub detecta que una de tus dependencias tiene una vulnerabilidad conocida, abre automáticamente un PR que la sube a la versión parcheada.

Puntos clave a tener presentes:

Version updates vs security updates

flowchart LR
    subgraph VU["Version updates"]
        A["dependabot.yml<br/>(vos lo configurás)"] --> B["PRs periódicos<br/>según schedule"]
    end
    subgraph SU["Security updates"]
        C["Alerta de Dependabot<br/>(vulnerabilidad conocida)"] --> D["PR automático<br/>a versión parcheada"]
    end
Version updatesSecurity updates
ObjetivoMantenerse al día en generalResponder a vulnerabilidades
NaturalezaProactivoReactivo
Requiere dependabot.ymlNo
Estado por defecto (repo público)Apagado hasta configurarloSiempre activo (no se puede apagar)
Disparadorschedule (daily/weekly/monthly)Una alerta de Dependabot abierta

Nota: los dos modos conviven. Lo habitual es tener dependabot.yml con version updates para tu stack y dejar que las security updates hagan su trabajo en paralelo. Un PR de seguridad puede aparecer en cualquier momento, sin esperar al schedule.

Recomendación práctica

Definí dependabot.yml cubriendo todos los ecosistemas de tu proyecto, incluyendo github-actions. Usá groups para no ahogarte en PRs y open-pull-requests-limit para acotar el ruido. Las security updates ya trabajan solas: tu parte es revisarlas y mergearlas rápido, porque cada una tapa un agujero real.


AnteriorCapítulo 11: PR templates y Discussions · SiguienteCapítulo 13: Automatización de repo