Resumen

Integrar Jenkins con GitHub no tiene por qué ser complejo: con un webhook bien configurado y un job freestyle, puedes ejecutar tus tests de Node.js en cada push o pull request. Aquí verás el flujo completo, desde enlazar el repositorio por HTTPS hasta activar el trigger correcto y evitar errores comunes como olvidar el slash final del webhook.

¿Cómo integrar Jenkins con GitHub y disparar builds con webhooks?

La clave está en configurar el SCM, habilitar el trigger de GitHub y preparar los build steps para npm. Además, valida que tengas Git instalado donde corre Jenkins.

  • Crear un nuevo item en Jenkins: freestyle project (por ejemplo, “test sum node js”).
  • Marcar “This is a GitHub project” y pegar la URL del repo por HTTPS.
  • En Git (SCM): pegar el repositorio. Si aparece error: probablemente Git no está instalado.
  • Repositorio público: sin credenciales. Las credenciales se verán más adelante.
  • Branch specifier vacío: ejecuta en todas las ramas y también en pull requests.
  • En Build Triggers: activar GitHub hook trigger para que el webhook inicie el build.

¿Qué comandos ejecutar con npm y Node.js?

Prepara dos build steps con Execute shell para instalar dependencias y correr tests con mocha.

cd jenkins test
npm install
cd jenkins test
npm test
# equivalente a: npm run test
  • Recuerda que cada Execute shell vuelve al workspace inicial: usa cd en cada paso.
  • Asegura la versión de Node.js y que npm esté en el PATH con el plugin de Jenkins: Provide Node en npm bin folder to path.
  • Evita depender de la versión del sistema operativo: elige la versión de Node.js desde Jenkins.

¿Cómo configurar el webhook en GitHub para Jenkins?

Sin webhook activo, GitHub no avisará a Jenkins. Configúralo en el repositorio para que cada push dispare el build automáticamente.

  • Verifica que el GitHub plugin esté instalado en Jenkins (viene con los plugins sugeridos).
  • En GitHub: Settings → Webhooks → Add webhook.
  • URL del webhook: http://IP:PUERTO/github-webhook/ con slash final. Usa dominio en lugar de IP si es posible.
  • Detalle crítico: incluye el slash final. Sin él, recibirás un 302 en GitHub y Jenkins no redirige.
  • Content type: dejar por defecto.
  • Seguridad: en producción usa secret.
  • Eventos: seleccionar solo push event.
  • Activar: en Recent deliveries busca un 200 para confirmar que llegó a Jenkins.

¿Cómo validar que Jenkins ejecuta al hacer push?

  • Realiza un commit y git push en el repo conectado.
  • En GitHub: revisa Recent deliveries con respuesta 200.
  • En Jenkins: refresca el dashboard, verás el build iniciado por el webhook y el log con:
  • Clonado del repositorio.
  • Detección del último commit.
  • Ejecución de cd jenkins test, npm install y npm test.

¿Qué errores evitar y qué buenas prácticas aplicar?

Pequeños detalles frenan la integración. Ajusta estos puntos para tener builds confiables y reproducibles.

  • No tener Git instalado: el SCM fallará al clonar.
  • Olvidar cd en cada Execute shell: cada paso regresa al workspace.
  • No añadir Node.js y npm al PATH: Jenkins usará la versión del sistema operativo.
  • No activar GitHub hook trigger: Jenkins no reaccionará a los push.
  • Configurar mal la URL del webhook: falta de slash final provoca 302.
  • Dejar el branch specifier vacío si buscas cubrir todas las ramas y PRs.
  • Seguridad: usar secret para el webhook en entornos productivos.
  • Automatización: busca auto-registrar el webhook al crear repos o jobs en tu organización.

¿Ya conectaste Jenkins con GitHub y te funcionó el webhook a la primera? Cuéntame qué parte te gustaría automatizar primero o qué detalle te dio más pelea.