Skip to content

Instantly share code, notes, and snippets.

@defvol
Last active December 4, 2015 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save defvol/49fd7b538f281cef7b5c to your computer and use it in GitHub Desktop.
Save defvol/49fd7b538f281cef7b5c to your computer and use it in GitHub Desktop.
Conectando a un dev team que trabaja en GitHub, con un equipo de managers que trabajan en JIRA.

Antecedentes

  • Nuestro dev team usa GitHub y Waffle para organizar los sprints de desarrollo.
  • Los managers utilizan JIRA.
  • Los devs no queremos cambiar nuestro flujo de trabajo; los managers le tienen miedo a GitHub.
  • Necesitamos sincronizar ambas plataformas.

Research

1) Existen servicios

Tasktop

Pero cuesta y no tenemos forma de pagarlo. Ver Agile Sprint Planning: GitHub Issues and Atlassian JIRA.

Zapier

https://zapier.com/zapbook/github/jira

El problema con Zapier es que en sus triggers de GitHub no tiene "Issue Comment", y en las acciones de JIRA sólo tiene Create Issues.

2) Ya existen plugins y connectors

JIRA DVCS Connector Plugin conecta issues de GitHub con JIRA a través de smart commits, p. ej. "JRA-123 #time 2d 5h".

Configuración

Problemas

  • Esto sólo conecta a través de commits
  • ¿Qué pasa con la creación de issues?
  • ¿Qué sucede con las etiquetas?
  • El OAuth de DVCS connector pide acceso RW a todas mis organizaciones.

Necesitamos:

  • Crear issues desde GitHub
  • Crear issues desde JIRA
  • Crear comentarios desde GitHub. Esto ya se puede realizar con los JIRA smart-commits.
  • Crear comentarios desde JIRA
  • Cerrar issues desde GitHub. Esto ya se puede realizar con los JIRA smart-commits.
  • Cerrar issues desde JIRA.
  • Mover issues a validación cuando se crea un release (y se sube a producción).

3) Podemos hacer nuestro sync con Webhooks

curl -u user:pass -X POST --data @issue.json -H "Content-Type: application/json" https://fubar.atlassian.net/rest/api/2/issue/

Algunas librerías En Node.js (stars:151, forks: 29), Python (31, 27), Go (43, 26).

Pero puppet labs ya tiene un servicio de Sinatra (17, 13) que permite:

  • Nuevos PRs se pueden asociar a issues de JIRA
  • Nuevos PRs que no están asociados a JIRA issues, se agregan en el backlog
  • Cerrar y reabrir PRs agrega un comentario en el issue en JIRA
  • Comentar en un PR agrega comentarios en el issue de JIRA
  • Importar masivamente PRs a JIRA

Los eventos de GitHub webhooks que nos interesan son:

Los eventos de JIRA webhooks que nos interesan son:

Los API endpoints de JIRA:

Propuesta

Hacer nuestros propios syncs con Webhooks, con esto evitamos dar acceso a JIRA a todas nuestras organizaciones, y desarrollamos las sincronizaciones pendientes que no provee el conector.

En paralelo probamos una solución en Go y otra en Sinatra (la de puppet labs).

En Go se puede combinar esta librería de webhooks, y está de JIRA.

Updates

  • (2015-12-01T15:30:00-0600) El DVCS connector no funcionó: https://github.com/mxabierto/dgm/issues/682
  • (2015-12-01T16:30:00-0600) Vamos a probar el proyecto de puppet labs
  • (2015-12-01T17:30:00-0600) El config del webhook no se puede hacer desde cli porque tengo 2FA.
  • (2015-12-02T17:15:00-0600) Se resolvió la instalación de puppet-webhooks. Escribí una wiki. El entry point es pull_request_app, GitHub Controller se encarga de entender los eventos. Ahí es donde podríamos agregar más funcionalidad.
  • (2015-12-04T16:45:00-0600) Se descarta Zapier por falta de Triggers y Actions de GitHub y JIRA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment