jonmatumalpha
conceptosnotasexperimentosensayos

© 2026 Jonatan Mata · alpha · v0.1.0

Experimentos

PR Auto-Approver

GitHub App serverless que auto-aprueba pull requests después de que CI pasa, con revisión de código opcional vía Amazon Bedrock. Cuatro repositorios: app Node.js/Probot, módulo Terraform AWS (Lambda + API Gateway + Secrets Manager), módulo Terraform GitHub (webhooks) e infra de despliegue.

evergreen#github-app#probot#terraform#lambda#api-gateway#secrets-manager#bedrock#code-review#automation#ci-cd

¿Qué es?

Una GitHub App serverless que auto-aprueba pull requests cuando todos los checks de CI pasan. Opcionalmente, antes de aprobar, envía el diff a Amazon Bedrock para una revisión de código con IA que detecta bugs, vulnerabilidades de seguridad y problemas de rendimiento.

El proyecto se divide en cuatro repositorios con responsabilidades claras:

RepositorioVersiónRol
pr-auto-approverv1.0.0App Node.js/Probot — lógica de negocio
terraform-aws-pr-auto-approverv1.2.0Módulo Terraform AWS — Lambda, API Gateway, Secrets Manager
terraform-github-pr-auto-approverv1.0.0Módulo Terraform GitHub — webhooks por repositorio
pr-auto-approver-infralatestDespliegue privado — consume los módulos, branch protegido

Arquitectura

Loading diagram...

Demo en producción

PR auto-aprobado por el bot después de que CI pasa

El screenshot muestra el flujo completo en el repositorio de prueba: el owner comenta sobre la integración con Secrets Manager, el bot aprueba automáticamente con «All checks passed. Auto-approved by pr-auto-approver bot.», y el PR se mergea — todo en menos de un minuto.

¿Cómo funciona?

El flujo completo desde que se abre un PR hasta la aprobación:

  1. Se abre un PR o se completa un check suite → GitHub envía un webhook
  2. API Gateway HTTP recibe el POST y lo enruta a Lambda
  3. Lambda (Probot) valida la firma HMAC del webhook usando el secreto de Secrets Manager
  4. Verifica que el autor del PR esté en la lista de autores permitidos
  5. Espera a que todos los check suites completen exitosamente
  6. Si Bedrock está habilitado: envía el diff al modelo para revisión de código
  7. Si la revisión no encuentra problemas → aprueba el PR
  8. Si encuentra problemas → publica comentarios de revisión y solicita cambios

Seguridad

La gestión de secretos sigue el principio de mínimo privilegio:

  • La clave privada de la GitHub App y el webhook secret se almacenan en AWS Secrets Manager
  • Lambda recibe los ARNs de Secrets Manager como variables de entorno — los valores crudos nunca se exponen
  • En cold start, Lambda lee los secretos y los cachea en memoria para invocaciones subsecuentes
  • El rol IAM tiene permisos de secretsmanager:GetSecretValue solo para los ARNs específicos
  • Permisos de Bedrock (bedrock:InvokeModel) se agregan solo cuando bedrock_enabled = true

Módulo AWS — recursos creados

El módulo terraform-aws-pr-auto-approver v1.2.0 crea:

RecursoConfiguración
LambdaNode.js 20, 128 MB / 30s (sin Bedrock), 256 MB / 120s (con Bedrock)
API Gateway v2HTTP API con ruta POST
Secrets Manager2 secretos (private key + webhook secret)
IAM RoleLeast-privilege, Bedrock condicional
CloudWatch Logs14 días de retención
CloudWatch DashboardMétricas Lambda, API GW, Bedrock (opcional)
CloudWatch AlarmsErrores, throttles, duración alta, 5xx
SNS TopicAlertas por email (opcional)
AWS BudgetPresupuesto mensual Bedrock (opcional)

Módulo GitHub — webhooks

El módulo terraform-github-pr-auto-approver v1.0.0 configura webhooks en cada repositorio especificado:

module "approver_github" {
  source  = "jonmatum/pr-auto-approver/github"
  version = "~> 1.0"
 
  webhook_url         = module.approver_infra.webhook_url
  webhook_secret      = var.webhook_secret
  github_repositories = ["repo-one", "repo-two"]
}

Suscribe cada repositorio a los eventos pull_request y check_suite, apuntando al endpoint de API Gateway.

Revisión de código con Bedrock

Bot solicitando cambios después de encontrar vulnerabilidades en el código

Cuando bedrock_enabled = true, Lambda envía el diff del PR a Claude 3 Haiku (configurable) antes de aprobar. En el screenshot, el bot detectó 3 problemas en código intencionalmente vulnerable — incluyendo una inyección SQL por concatenación directa de req.query.id — y solicitó cambios en lugar de aprobar. El modelo revisa:

  • Bugs y errores de lógica
  • Vulnerabilidades de seguridad
  • Problemas de rendimiento
  • Manejo de errores faltante

Si Bedrock está deshabilitado o falla, el bot hace fallback a auto-aprobación después de que CI pasa — la revisión de IA nunca bloquea el flujo.

¿Por qué importa?

En equipos con agentes de IA que generan PRs automáticamente — como el content agent de esta base de conocimiento — el cuello de botella se mueve de «escribir código» a «revisar y aprobar PRs». Este bot elimina la espera manual para PRs de autores confiables que ya pasaron CI, mientras que la capa opcional de Bedrock agrega una red de seguridad de revisión de código sin intervención humana.

Referencias

  • GitHub Apps documentation — GitHub, 2024. Documentación oficial para crear GitHub Apps con permisos granulares.
  • Probot framework — GitHub, 2024. Framework para construir GitHub Apps con Node.js.
  • AWS Secrets Manager — AWS, 2024. Servicio para gestionar secretos con rotación automática.
  • Amazon API Gateway HTTP APIs — AWS, 2024. APIs HTTP de baja latencia y bajo costo.
  • Amazon Bedrock — AWS, 2024. Servicio gestionado para acceder a modelos fundacionales.

Contenido relacionado

  • GitHub Actions

    Plataforma de CI/CD nativa de GitHub. Workflows declarativos en YAML que automatizan build, test, deploy y cualquier tarea del ciclo de desarrollo — directamente desde el repositorio.

  • Terraform

    Herramienta de Infrastructure as Code de HashiCorp que permite definir, provisionar y gestionar infraestructura multi-cloud mediante archivos declarativos en HCL.

  • AWS Lambda

    Servicio de cómputo serverless de AWS que ejecuta código en respuesta a eventos sin necesidad de aprovisionar ni administrar servidores, escalando automáticamente desde cero hasta miles de ejecuciones concurrentes.

  • AWS API Gateway

    Servicio managed de AWS para crear, publicar y gestionar APIs REST, HTTP y WebSocket que actúan como puerta de entrada a funciones Lambda y otros servicios backend.

  • Gestión de Secretos

    Prácticas y herramientas para almacenar, distribuir y rotar credenciales, API keys y otros datos sensibles de forma segura en aplicaciones y pipelines.

  • Serverless

    Modelo de computación en la nube donde el proveedor gestiona la infraestructura automáticamente, permitiendo ejecutar código sin aprovisionar ni administrar servidores, pagando solo por el uso real.

  • Infrastructure as Code

    Práctica de definir y gestionar infraestructura mediante archivos de configuración versionados en lugar de procesos manuales. Fundamento de la automatización moderna de operaciones.

  • CI/CD

    Continuous Integration y Continuous Delivery/Deployment — prácticas que automatizan la integración de código, testing y entrega a producción. Fundamento de la ingeniería de software moderna.

Experimentos